React Router,单击浏览器后退按钮时的生命周期

时间:2017-08-17 02:59:19

标签: javascript reactjs react-router

我想检测用户何时按下后退按钮。基本上,当用户从/ projects转到/ projects / foo时,导航样式会发生变化。

<Route path="/projects" component={(props, state, params) => 
        <Projects {...props} />
</Route>

在从/ projects到特定项目中检测到onClick事件时,此方法正常,但是当用户点击后退按钮时componentDidMount未被调用...我正在尝试使用this.props.location.pathname来确定具体路径,但由于我需要设置状态,我无法在render内完成此操作。

有没有“反应”的方式来解决这个问题? THX

1 个答案:

答案 0 :(得分:2)

如您所述,componentDidMount只会在安装组件时调用一次。相反,请使用生命周期挂钩componentWillReceivePropsHere是文档。

如果您处于所需/正确的路径,则可以使用此条件有条件地设置State。这将更新将重新呈现组件的状态。

更新:

由于发布此回复componentWillReceiveProps已被弃用。根据您的使用情况,您需要使用shouldComponentUpdategetDerivedStateFromProps。关于here的更多信息。