理解withRouter

withRouter的适用场景

1.避免更新受阻

因为react-redux的connect高阶组件会为传入的参数组件实现shouldComponentUpdate 这个钩子函数,
导致只有prop发生变化时才触发更新相关的生命周期函数(含render)而很显然,我们的location对象并没有作为prop传入该参数组件

// before
export default connect(mapStateToProps)(Something)

// after
import { withRouter } from 'react-router-dom'
export default withRouter(connect(mapStateToProps)(Something))

2.在组件中意图使用history来控制路由跳转

import React from "react";
import {withRouter} from "react-router-dom";

class MyComponent extends React.Component {
  ...
  myFunction() {
    this.props.history.push("/some/Path");
  }
  ...
}
export default withRouter(MyComponent);

如果我们不使用withRouter来处理(MyComponent),那么我们这里的this.props就取不到history,会报hitstory is undefiend之类的错。

猜你喜欢

转载自blog.csdn.net/weixin_43271750/article/details/86299567