useSelector回调中props值变更时是否生效?是否触发重渲染与Effect?
问题解答
当组件传入的organizationId props发生变更时,会触发组件重渲染,且如果对应的组织名称发生变化,控制台会打印新的组织名称,具体逻辑如下:
- 组件重渲染触发逻辑:React组件的props发生变化时,会自动触发组件的重渲染流程。在重渲染过程中,
useSelector会重新执行传入的选择器函数,用新的organizationId从Redux state中获取对应的organizationName。 - useEffect执行逻辑:你的
useEffect依赖数组包含organizationName,当重渲染后organizationName的值与之前不同时,React会执行useEffect的回调函数,控制台就会打印出新的组织名称。
特殊情况说明
如果新的organizationId对应的Redux state中组织名称和旧的organizationName完全一致,那么useEffect不会触发(因为依赖值没有变化),但组件依然会因为organizationId props变更而完成一次重渲染,只是最终UI不会有变化。
内容的提问来源于stack exchange,提问作者kamm
相关产品推荐
相关产品推荐

