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

n3schb8v  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(185)

我有一个从DB获取值的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);
  }, []);

但不知为何它没有改变...有人能帮我吗?非常感谢!

iqxoj9l9

iqxoj9l91#

我创建了一个新的useState:

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

名为setTimeout,用于在组件装载后强制执行某些“更改”:

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

调用useEffect来改变我的新useState:

let newItems = [];

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

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

相关问题