You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在useEffect中从Redux Store设置本地state及状态副本是否合理?

问题1:保留从Redux Store复制而来的本地状态是否合理?

  • 你的场景下完全合理,不属于冗余的可信数据源:你本地存的是用户未提交的临时修改值,Redux Store存的是全局统一的基准值,二者分工完全不同。如果不存本地状态,用户每改一个字符你都要dispatch action改Store,不仅没必要,还会触发所有依赖这个Store字段的组件重渲染,性能反而差。
  • 只有当你不需要在本地做临时修改、所有变更都直接同步到Store的场景下,本地状态才是多余的,直接用useSelector返回的值即可。

问题2:在useEffect中调用setState是否合理?

  • 你的思路没问题,但写法有两个可以优化的点:
    1. 你贴的代码里useEffect的语法是错的,少了回调函数包裹逻辑
    2. 依赖项只写了key,如果后续key不变但Store里的myVar更新了,本地状态不会同步,建议补全依赖
  • 修正后的写法参考:
const myStoreObj = useSelector(state=>state.Store);
const key = myStoreObj?.key;
// 也可以直接在useState里给初始值,少一次重渲染
const [myVar, setMyVar] = useState(myStoreObj?.myVar ?? '');

useEffect(() => {
  if(key){
    setMyVar(myStoreObj.myVar);
  }
}, [key, myStoreObj?.myVar]); // 补全依赖,避免更新遗漏
  • 如果你的场景只需要在Store初始化完成后同步一次初始值,后续Store的myVar变更不需要同步到本地,那你原来的依赖只写key也没问题,只要把语法修正即可。

内容的提问来源于stack exchange,提问作者Huzan Toorkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 10:33:02