javascript - React Router, lifecycle when browser's back button is clicked - Stack Overflow

I want to detect when the user has hit the back button. Essentially, when a user goes from the project

I want to detect when the user has hit the back button. Essentially, when a user goes from the /projects to /projects/foo the nav style changes.

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

This works fine when detecting an onClick event from /projects to a specific project, but when the user hits the back button ponentDidMount is not called... I'm trying to use this.props.location.pathname to determine the specific path, but as I need to set state I cannot do this inside render.

Is there a "react" way of going about this? Thx

I want to detect when the user has hit the back button. Essentially, when a user goes from the /projects to /projects/foo the nav style changes.

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

This works fine when detecting an onClick event from /projects to a specific project, but when the user hits the back button ponentDidMount is not called... I'm trying to use this.props.location.pathname to determine the specific path, but as I need to set state I cannot do this inside render.

Is there a "react" way of going about this? Thx

Share Improve this question asked Aug 17, 2017 at 2:59 vesperaevesperae 1,3012 gold badges19 silver badges28 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 4

As you noted, ponentDidMount will only be called once when the ponent is mounted. Instead, use the lifecycle hook ponentWillReceiveProps. Here is the documentation.

You can use this to conditionally setState if you're at the desired/correct path. This will update the state which will then re-render the ponent.

UPDATE:

Since posting this answer ponentWillReceiveProps has been deprecated. You'll need to use shouldComponentUpdate or getDerivedStateFromProps depending on your use case. More info on that here.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745426522a4627203.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信