最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

reactjs - Different Behavior of useState and useEffect When Upgrading from React 17.0.2 to React 18.3.1 - Stack Overflow

programmeradmin5浏览0评论

I'm working on a React project and recently upgraded from React 17 to React 18. My code was working perfectly in React 17, but now, after upgrading to React 18, I'm facing an issue where only the last state update is being reflected in the formData state. Specifically, when I update multiple forms' data (General, Moxfive, Project), React 18 only reflects the latest update and ignores the intermediate states.

const initialFormData = {
  General: { data: null, isSubmit: false },
  Moxfive: { data: null, isSubmit: false },
  Project: { data: null, isSubmit: false },
};

const [formData, setFormData] = useState(initialFormData);

useImperativeHandle(ref, () => ({
  formSubmitCallback: () => {
    if (!isSaveForm) {
      setTriggerSubmit(uuidv4());
    }
    return isSaveForm;
  },
}));

const a = () => {
  useEffect(() => {
    if (triggerSubmit != null) {
      if (GeneralFormRef.current) {
        GeneralFormRef.current.submit();
      }
    }
  }, [triggerSubmit]);
};

const b = () => {
  useEffect(() => {
    if (triggerSubmit != null) {
      if (MoxfiveFormRef.current) {
        MoxfiveFormRef.current.submit();
      }
    }
  }, [triggerSubmit]);
};

const c = () => {
  useEffect(() => {
    if (projectFormData !== null) {
      setFormData({
        ...formData, // Previous state is merged here
        Project: { data: projectFormData, isSubmit: true },
      });
    }
  }, [projectFormData]);
};

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论