首页 > 解决方案 > 编辑表单在提交时不会更改 - 仅在硬刷新时

问题描述

所以在这个反应组件上,我有一个编辑表单。useEffect如下:

useEffect(() => {
        if(success) {
            history.push('/home/admin/tasks')
        } else {
            if(!task.title || task._id !== taskId) {
                dispatch(getTaskDetails(taskId))
            } else {
                titleRef.current!.value = task.title;
                descRef.current!.value = task.description;
                valueRef.current!.value = task.value;
                durationRef.current!.value = task.duration;
            }
        }
    },[dispatch, task, taskId, history, successDelete, success])

所以这里发生了很多事情。

  1. 如果表单被提交,success则变为 true 并触发使用效果。
  2. 如果success为真,则重定向回显示所有“任务”列表的页面。
  3. 如果success不正确,则获取任务详细信息并再次在输入中显示它们。

当我重定向回他的“AllTask​​s”页面时,我有一个useEffect重置success,所以它不再是真的。

正在发生的错误是,当我执行所有这些操作并单击返回刚刚更新的“任务”时,这些字段不会使用新数据进行更新。只有当我在浏览器上点击刷新时它才会更新。

我从useEffect任务编辑页面上方的 redux 商店调用它

const taskUpdate = useSelector((state: RootStateOrAny) => state.taskUpdate)
    const { loading: loadingUpdate, error: errorUpdate, success } = taskUpdate

标签: javascriptreactjsredux

解决方案


推荐阅读