React路由器重新安装React组件时,React组件不会更改状态

时间:2019-01-18 08:44:57

标签: reactjs react-router-dom

我有个提供不同组件的React Router。看起来像这样:

ReactDOM.render(
        <Provider store={store}>
                <Router>
                        <div>
                                <Route exact path="/" component={ListPage}/>
                                <Route path="/edit/:itemId" component={ItemPage}/>
                        </div>
                </Router>
        </Provider>,
        document.getElementById('root')
);

所以-当我打开编辑页面时-组件渲染并在安装时获取该项目的数据。我将其设置为状态,以便组件呈现。

然后-我返回列表页面并打开另一个项目的编辑页面-当编辑页面再次装入时-它具有与以前相同的状态。

为什么会这样?路由器每次挂载时,编辑页是否都应该以默认状态重新启动?

(目前,我正在通过重置componentDidMount()上的状态来解决此问题,但是对我来说,这看起来很丑陋。)

1 个答案:

答案 0 :(得分:3)

这应该可以解决您的问题。

ReactDOM.render(
      <Provider store={store}>
        <Router>
          <Switch>
            <Route exact path="/" component={ListPage}/>
            <Route path="/edit/:itemId" component={ItemPage}/>
          </Switch>
        </Router>
      </Provider>,
   document.getElementById('root')
);