react-redux 连接是否会导致重新渲染?
Does the react-redux connect cause rerender?
我有一个组件,其中没有 componentWillRecieveProps 并且没有其他函数正在改变状态,尽管每当商店更新时,组件(包装在连接中)正在重新渲染(这是我想要的,但我不明白没有状态它是如何发生的)。我知道 connect 会为组件提供新的道具,如果它们发生了变化,但这会导致组件重新渲染吗?
简短的回答是,道具的改变会导致组件重新渲染。查看生命周期方法 shouldComponentUpdate
可能会有所帮助。每次 props
或 state
更改时,React 都会调用此函数以确定组件是否应重新渲染。它看起来像这样:
shouldComponentUpdate(nextProps, nextState) {
// return boolean
}
如果 return 为真,则组件将更新,如果 return 为假,则不会重新渲染。
如果我们不将此方法添加到我们的组件中,则会使用默认实现,即:
shouldComponentUpdate(nextProps, nextState) {
return true;
}
即始终更新 props/state 更改。
有时,出于性能原因,在此生命周期方法中实现一些逻辑以仅在必要时更新可能很有用,但大多数情况下,默认值(始终 return true)工作正常。
我有一个组件,其中没有 componentWillRecieveProps 并且没有其他函数正在改变状态,尽管每当商店更新时,组件(包装在连接中)正在重新渲染(这是我想要的,但我不明白没有状态它是如何发生的)。我知道 connect 会为组件提供新的道具,如果它们发生了变化,但这会导致组件重新渲染吗?
简短的回答是,道具的改变会导致组件重新渲染。查看生命周期方法 shouldComponentUpdate
可能会有所帮助。每次 props
或 state
更改时,React 都会调用此函数以确定组件是否应重新渲染。它看起来像这样:
shouldComponentUpdate(nextProps, nextState) {
// return boolean
}
如果 return 为真,则组件将更新,如果 return 为假,则不会重新渲染。
如果我们不将此方法添加到我们的组件中,则会使用默认实现,即:
shouldComponentUpdate(nextProps, nextState) {
return true;
}
即始终更新 props/state 更改。
有时,出于性能原因,在此生命周期方法中实现一些逻辑以仅在必要时更新可能很有用,但大多数情况下,默认值(始终 return true)工作正常。