如何将 useEffect 用于没有依赖性的 useState 变量?
How to use useEffect for a useState variable that has no dependency?
我正在创建一个 React 表单,该表单在本地状态下存储新产品列表,即
const [listItem, setListItem] = useState([]);
我有提交处理程序,我在其中附加新值,例如-
const handleAddProduct = (data) => {
setListItem ([...listItem], data)
console.log('ListItems-', listItem); // my console log doesn't update state but in react debugger tool I do see it's updated.
}
如何使用 useEffect 使其始终更新状态? P.S。 - 数据不是本地状态,它被限制在某个块中。
状态更新是异步的,不会立即反映。只有在下一个周期。这就是为什么您可以签入 useEffect:
useEffect(() => {
console.log(listItem);
},[listItem]);
状态正在正确更新。
与问题无关,但是,如果您要添加到数组中,您可能需要这样做:
const handleAddProduct = (data) => {
setListItem ([...listItem, data]);
}
由于 Reactjs 的 update batching,您无法在更新后立即在事件处理程序中看到更新后的状态
如果您想查看值的变化,请将其放在组件的 return 函数之前:
像这样:
const handleAddProduct = (data) => {
setListItem ([...listItem], data)
}
console.log('ListItems-', listItem);
return (
);
我正在创建一个 React 表单,该表单在本地状态下存储新产品列表,即
const [listItem, setListItem] = useState([]);
我有提交处理程序,我在其中附加新值,例如-
const handleAddProduct = (data) => {
setListItem ([...listItem], data)
console.log('ListItems-', listItem); // my console log doesn't update state but in react debugger tool I do see it's updated.
}
如何使用 useEffect 使其始终更新状态? P.S。 - 数据不是本地状态,它被限制在某个块中。
状态更新是异步的,不会立即反映。只有在下一个周期。这就是为什么您可以签入 useEffect:
useEffect(() => {
console.log(listItem);
},[listItem]);
状态正在正确更新。
与问题无关,但是,如果您要添加到数组中,您可能需要这样做:
const handleAddProduct = (data) => {
setListItem ([...listItem, data]);
}
由于 Reactjs 的 update batching,您无法在更新后立即在事件处理程序中看到更新后的状态
如果您想查看值的变化,请将其放在组件的 return 函数之前:
像这样:
const handleAddProduct = (data) => {
setListItem ([...listItem], data)
}
console.log('ListItems-', listItem);
return (
);