如何使用最后添加的任务在 React 中更新状态?

How to make the state update in React with the last added task?

我正在构建一个简单的待办事项应用程序,并且在我实施了 react-sortable-hoc 之后——如果你不知道它是一个实现拖放的反应插件——待办事项列表不再更新上次添加的待办事项.我在控制台中没有收到任何类型的错误。

我尝试使用在 react-sortable-hoc onSortEnd 函数中排序的状态,但随后出现 Invalid attempt to spread non-iterable instance 错误。

This is the application an codesandbox

我想用最新添加的待办事项更新状态。

您的代码有 2 个问题,我可以看到:

1) 在Form.js 中,您实际上并没有将状态设置为表单提交时包含最新值的新数组。在您的 handleSubmit 函数中,您需要调用 setState(createNewTask(value)) 而不仅仅是 createNewTask(value).

2) 您正在使用一个名为 alteredState 的单独状态来实际创建您的列表,并在主状态中使用 tasks 数组对其进行初始化。但是,当主数组更改时,您不会更新第二个数组,因为传递给 useState 的值仅在挂载时设置一次。您可以使用 useEffect 挂钩在第一个状态更改时更新您的次要状态:

useEffect(() => {
    setAlteredState(state.tasks);
  }, [state]);

分叉here.