2017-06-19 11 views
1

大規模なアプリケーションにReactMeteorおよびReact Routerを使用しています。ルートコンバート後にcreateContainerがデータを受信しない(リアクタルーター)

ブラウザの履歴に戻ると、先に進むとcreateContainerのデータが消えるようです。これまで私はすべてを試みましたが、この問題は引き続き起こります。これがなぜ起こるのかあなたが知っていますか?どのようにそれを解決するには?どんな助けでも大歓迎です。

全ページを強制的に更新しても問題ありません。私のコンポーネントの輸出の

ワン:

export default createContainer((params) => { 
    const subs = {} 
    subs.image = Meteor.subscribe('contents.images'); 
    subs.provider = Meteor.subscribe('contentProviders.images'); 

    const data = {} 
    data.image = CloudinaryImageContent.findOne({ _id: params.match.params.id }); 
    data.provider = CloudinaryProvider.findOne(); 

    return { subs, data } 
}, ImageContentEditPage); 

私のラップコンポーネントで、私はちょうどこの特定のシナリオではcomponentWillReceiveProps

componentWillReceiveProps = ({data}) => { 
    this.setState({provider: data.provider, image: data.image}); 
} 
+0

console.log(subs)の結果が得られたら? –

+0

リンクまたはhistory.pushを使用してページに移動すると、すべて正常です。前のデータが消えると戻るボタンを押すと、次のボタン(ブラウザの)を押すと同じことが起こります。 –

+0

createContainerに何かを記録して確認してください。 createContainerは確実にルートに戻るときに実行する必要があります。 見た目からは、何らかの理由で定期購入が変更されていると言えます。理由を把握してみてください。 – Sudhanshu

答えて

0

を実行している私はいくつかの基本的な検証のためにcomponentDidMountを使用して終了しましたデータの可用性。

componentDidMount =() => { 
    const { data } = this.props; 
    this.setState({provider: data.provider || {}, image: data.image || {}}); 
} 

それは仕事をしました。

関連する問題