【问题标题】:Does the react-redux connect cause rerender?react-redux 连接是否会导致重新渲染?
【发布时间】:2017-03-31 02:27:56
【问题描述】:

我有一个组件,其中没有 componentWillRecieveProps 并且没有其他功能正在改变状态,尽管每当商店更新时,组件(包装在连接中)正在重新渲染(这是我想要的,但我不明白没有状态它是如何发生的)。我知道如果组件发生更改,connect 会为组件提供新的道具,但这会导致组件重新渲染吗?

【问题讨论】:

  • 可以分享一下组件的简化代码吗?如果你传递了一些 props,当你将新的 props 传递给组件时,react 会计算差异,因此它会重建它的虚拟 DOM,并将差异传播到你的真实 DOM。 (在反应中称为和解过程)。而且这里跟redux没关系,就是单纯的react

标签: reactjs react-redux


【解决方案1】:

简短的回答是,是的,props 的变化会导致组件重新渲染。查看生命周期方法shouldComponentUpdate 可能会有所帮助。每次 propsstate 更改以确定组件是否应该重新渲染时,React 都会调用此函数。它看起来像这样:

shouldComponentUpdate(nextProps, nextState) {
    // return boolean
}

如果返回true,则组件将更新,如果返回false,则不会重新渲染。

如果我们不给我们的组件添加这个方法,那么就使用默认实现,简单来说就是:

shouldComponentUpdate(nextProps, nextState) {
    return true;
}

即总是更新道具/状态的变化。

有时出于性能原因,在此生命周期方法中实现一些逻辑以仅在必要时更新可能很有用,但大多数情况下默认值(始终返回 true)可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 2023-03-28
    • 2017-11-20
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    相关资源
    最近更新 更多