javascript - 如何防止withRouter导致PureComponent重新渲染?

标签 javascript reactjs react-router

我可以通过 history.push("/path") 调用一个链接。要访问 history,我必须使用 withRouter 将多个 Prop 传递给组件。 withRouter 传递的match 即使路径不变也是不同的。这会导致 PureComponent 重新呈现。有办法解决这个问题吗?

例子:

class HomeButton extends PureComponent {
  onClick = () => {
    const { history } = this.props;
    history.push("/");
  }

  render() {
    return <Button onClick={this.onClick}/>
  }
}

export default withRouter(HomeButton);

我用了shallowEqualExplain检查导致更新的 Prop 。

最佳答案

如果您不想更新 Button,我建议您使用 Component 而不是 PureComponent

React.PureComponent’s shouldComponentUpdate() only shallowly compares the objects. If these contain complex data structures, it may produce false-negatives for deeper differences.

引用:https://reactjs.org/docs/react-api.html#reactpurecomponent

关于javascript - 如何防止withRouter导致PureComponent重新渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51649171/

相关文章:

javascript - 如何获取div的第一个 child 的属性?

javascript - 用于非单页应用程序的 Angular js

javascript - 将所有元素包裹在两个父元素之间

reactjs - React.js shouldComponentUpdate() 和 React-router 链接

reactjs - React 路由器 - 链接主页上的 activeClassName

javascript - 元素的高度 javascript

javascript - 无法在 native react 中读取 null 的属性字符串

javascript - 为什么添加扩展运算符使代码返回空数组?

reactjs - Prettier 不格式化 .tsx 文件

reactjs - 为什么我的 NavLink 没有使用 Semantic-ui-react 设置为事件状态?