【发布时间】:2017-06-19 23:33:33
【问题描述】:
我将React、Meteor 和React Router 用于大型应用程序。
当我在浏览器历史记录中导航返回时,即使当我前进时,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});
}
【问题讨论】:
-
如果你在 console.log(subs) 中得到结果?
-
如果我使用 Link 或 history.push 导航到页面,一切都很好,一旦我点击后退按钮,以前的数据就会消失,如果我点击下一个按钮(浏览器的)也会发生同样的情况。
-
请在 createContainer 中登录并检查。 createContainer 绝对应该在返回路由时运行。从表面上看,我会说您的订阅由于某种原因正在发生变化。试着找出原因。
-
subs未定义。这就是为什么我的数据正在消失。你们知道为什么会发生这种情况吗?这是一种非常奇怪的行为。 -
componentWillReceiveProps在我使用浏览器历史导航按钮返回上一个路线后不会触发。
标签: reactjs meteor react-router