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 || {}}); 
} 

这样做的工作。