在卸载组件之前,React-router-dom首先调用构造函数

时间:2018-10-29 10:05:16

标签: reactjs react-redux react-router-dom

我希望每次单击标题中的链接时都重新渲染组件。因此,我使用了route中的组件道具来重新渲染我的组件。

<Route
 exact
 path="/assets"
 component={props => (<AssetsView {...props} />)}
/>

在文档中指出

  

这将导致现有组件的卸载和新的   组件安装,而不仅仅是更新现有组件。

但是,当我单击链接时,将首先调用构造函数,然后是componentWillMount,而最后调用的是componentWillUnmount。

我有2个组件的Edit和Table视图,我使用react-router-dom在这两个组件之间导航。当我在Edit组件中时,我想根据Table组件安装之前的条件在unmount上更改redux状态,并在Table组件的初始状态(使用Constructor)中使用更改后的redux状态。如何实现?

示例程序-https://codesandbox.io/s/kmy387l59o

有人遇到这个问题吗?

1 个答案:

答案 0 :(得分:1)

从React16开始,componentWillUnmount是异步的,这就是为什么在下一个组件componentWillMount之后调用它的原因。有关更多详细信息,请查看讨论here.

  

在React 15中,ComponentWillUnmount在呈现   DOM中的下一个组件。在当前版本(v16)中,   在安装下一个组件之后,调用了ComponentWillUnmount。