react-router:跨不同的非嵌套路由调用componentWillUnmount

时间:2017-03-01 19:31:51

标签: javascript reactjs meteor react-router

我正在使用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中读到,当我的情况发生变化时,组件应该卸载,但似乎我可能错过了一些东西。我该如何解决这个问题?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用react-redux,浏览器本地存储或其他方式以不同方式执行此操作。在react-redux,您可以更改商店。

例如,您可以在商店中定义“firstTimeInCharts”并在componentWillMount“APP”上更新它,并设置“firstTimeInMain”并在“MainPage”组件的componentWillMount上更新它。您可以通过检查这些状态来跟踪是否调用您的函数。您还可能希望在商店中存储其他值,以便在整个应用中访问它们。

或者您可以使用浏览器的本地存储来执行相同的操作。

我希望它可以帮到你。