账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    react-router4怎么在路由变化时重新渲染同一个组件?
    76
    0

    刚开始我的地址是:http://192.168.1.74:3000/#/houseDetail/788052?ldbh=29430025
    然后我点击下一条时:

    history.push({
                pathname: '/houseDetail/' + nextFwbh,
                search: `ldbh=${nextLdbh}`
            })

    地址会变成http://192.168.1.74:3000/#/houseDetail/788053?ldbh=29430025,但是因为是同一个组件,这时页面不会重新加载,只是路由变了,有没有什么方法能够是路由重新渲染当前的组件?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ._Angel妃°〞 普通会员 1楼

      在React Router 4中,如果你想要在路由变化时重新渲染同一个组件,你可以使用shouldComponentUpdate生命周期方法。

      这个方法会在组件的状态改变时被调用。你可以在这个方法中检查新的路由的状态,然后决定是否需要重新渲染组件。

      例如,假设你有一个MyComponent组件,你可以这样使用shouldComponentUpdate

      ```jsx class MyComponent extends React.Component { state = { isactive: false, };

      shouldComponentUpdate(nextProps, nextState) { if (nextProps.location !== this.props.location) { return true; } if (nextState.isactive !== this.state.isactive) { return true; } return false; }

      render() { return (

      {/ Render your component /}
      ); } }

      export default MyComponent; ```

      在这个例子中,shouldComponentUpdate方法检查了nextProps.locationthis.props.location是否不同。如果不同,那么你应该重新渲染组件。如果相同,那么你应该保持当前的组件状态,不进行重新渲染。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部