我正在使用react-router,路由结构如下:
const routes = (
<Router history={browserHistory}>
<Route path="/main" component={MainPage}></Route>
<Route path="/charts/:chartID" component={App}></Route>
</Router>
)
当用户切换到&#34; / charts /:chartID&#34;时,我试图调用流星方法。到&#34; / main&#34;。我只希望在可能的情况下调用一次方法
在App.js中,我使用了生命周期方法:
componentDidUpdate(){
Meteor.call('test',"update");
} // prints "update"
componentWillUnmount(){
Meteor.call('test',"unmount");
} // nothing happens when url changes
Main.js(服务器):
Meteor.methods({
'test'(obj){
console.log(obj)
}
})
我从这个source中读到,当我的情况发生变化时,组件应该卸载,但似乎我可能错过了一些东西。我该如何解决这个问题?
非常感谢任何帮助!
答案 0 :(得分:0)
您可以使用react-redux,浏览器本地存储或其他方式以不同方式执行此操作。在react-redux,您可以更改商店。
例如,您可以在商店中定义“firstTimeInCharts”并在componentWillMount“APP”上更新它,并设置“firstTimeInMain”并在“MainPage”组件的componentWillMount上更新它。您可以通过检查这些状态来跟踪是否调用您的函数。您还可能希望在商店中存储其他值,以便在整个应用中访问它们。
或者您可以使用浏览器的本地存储来执行相同的操作。
我希望它可以帮到你。