2017-06-19 70 views
1

我對大型應用程序使用React,MeteorReact RoutercreateContainer在路由轉換後沒有收到數據(反應路由器)

當我瀏覽瀏覽器歷史記錄時,甚至當我繼續前進時,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

如果我使用Link或history.push導航到頁面,一切都很好,一旦我點擊後退按鈕之前的數據消失,如果我點擊下一個按鈕(瀏覽器),也會發生同樣的情況。 –

+0

請在createContainer中記錄一些內容並檢查。 createContainer應該回到路線上。 從它的外觀來看,我會說你的訂閱是由於某種原因而改變的。試圖找出原因。 – Sudhanshu

回答

0

在這種特定情況下我最終使用componentDidMount一些基本驗證了數據可用性。

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

這樣做的工作。