Reactjs 如何使状态更新与上次添加的任务一起响应?

Reactjs 如何使状态更新与上次添加的任务一起响应?,reactjs,react-hooks,react-sortable-hoc,Reactjs,React Hooks,React Sortable Hoc,我正在构建一个简单的todo应用程序,在我实现了react sortable hoc(如果您不知道是react的插件,它实现了拖放)之后,todo列表不再随最后添加的todo更新。我没有在控制台中得到任何类型的错误 我尝试使用在react-sortable hoc-onSortEnd函数中排序的状态,但随后我尝试传播不可编辑的实例错误的尝试无效 我想使用添加到TODO的lattest进行状态更新。您的代码有两个问题,我可以看到: 1) 在Form.js中,您实际上没有将状态设置为新数组,该数组

我正在构建一个简单的todo应用程序,在我实现了react sortable hoc(如果您不知道是react的插件,它实现了拖放)之后,todo列表不再随最后添加的todo更新。我没有在控制台中得到任何类型的错误

我尝试使用在react-sortable hoc-onSortEnd函数中排序的状态,但随后我尝试传播不可编辑的实例错误的尝试无效


我想使用添加到TODO的lattest进行状态更新。

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

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

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

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

Fork.

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

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

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

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

叉子。

这就解决了问题。谢谢你,卢瑟福。很明显,你已经指出了,这就解决了问题。谢谢你,卢瑟福。很明显,你已经指出了。