繁体   English   中英

为什么我的 useState 没有更新值?

[英]Why my useState is not updating the value?

我有一个从数据库获取值的 useState:

const [checklist, setChecklist] = useState(undefined);

在此处输入图像描述

我有这个条件,当发生时,我想改变 useState:

let newItems = [];
let newChecklist = {};

  if (project?.analysisData?.actionPlan == "no") {
    newItems = checklist?.items?.filter(
      (item) => item.conformityStatus !== "initial_status"
    );
    newChecklist = { ...checklist, items: newItems };
  }

请注意,这些项目已被过滤。

在此处输入图像描述

我正在尝试使用 useEffect 更改 useState 的值:

useEffect(() => {
    setChecklist(newChecklist);
  }, []);

但由于某种原因它没有改变..任何人都可以帮助我吗? 太感谢了!

我创建了一个新的 useState:

const [changeChecklist, setChangeChecklist] = useState(true);

称为 setTimeout,以在组件安装后强制进行一些“更改”:

setTimeout(() => {
    setChangeChecklist(false);
  }, 550);

并通过更改我的新 useState 来调用 useEffect:

let newItems = [];

  useEffect(() => {
    if (project?.analysisData?.actionPlan == "no") {
      newItems = checklist?.items?.filter(
        (item) => item.conformityStatus !== "initial_status"
      );
      setChecklist({ ...checklist, items: newItems });
    }
  }, [changeChecklist]);

也许它不是最好的解决方案,但它是我想出的解决问题的方法:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM