Reactjs 如何使状态更新与上次添加的任务一起响应?
我正在构建一个简单的todo应用程序,在我实现了react sortable hoc(如果您不知道是react的插件,它实现了拖放)之后,todo列表不再随最后添加的todo更新。我没有在控制台中得到任何类型的错误 我尝试使用在react-sortable hoc-onSortEnd函数中排序的状态,但随后我尝试传播不可编辑的实例错误的尝试无效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的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]);
叉子。这就解决了问题。谢谢你,卢瑟福。很明显,你已经指出了,这就解决了问题。谢谢你,卢瑟福。很明显,你已经指出了。