普通变量还是React State?基于count计算的currentSlide是否需要设为状态?
关于currentSlide是否需要设为state的解答
结论:currentSlide 不需要定义为 state,你当前直接通过 slides[count] 计算赋值的写法是最优方案
原因如下:
- React 中 state 的核心使用原则是:只把无法通过现有 state、props、常量计算得到的可变值存为 state。currentSlide 完全可以通过已有的 state(count)和固定常量(slides)计算得到,属于典型的派生值,没有独立存储为 state的必要。
- 如果你强行把 currentSlide 设为 state,反而需要额外写
useEffect监听 count 的变化,每次 count 更新后手动同步 currentSlide 的值,平白增加了维护成本,还很容易出现状态不同步的bug,甚至会多触发一次无意义的组件重渲染。 - 这种从数组中取下标对应值的计算成本极低,每次组件重渲染时实时计算完全不会造成性能问题,连
useMemo优化都不需要,更没必要存为state占用额外内存。
简化组件状态、避免冗余状态是降低React组件维护成本的核心原则之一,当前你的写法已经完全符合最佳实践。
内容的提问来源于stack exchange,提问作者Chris K.
相关产品推荐
相关产品推荐

