【发布时间】:2021-05-14 20:39:47
【问题描述】:
function App(){
const [categories, setCategories] = useState([])
useEffect(() => {
const initCategories = [
{ name: 'Restaurants', expenses: [], total: 0 },
{ name: 'Travel', expenses: [], total: 0 },
{ name: 'Dessert', expenses: [], total: 0 },
];
setCategories(initCategories);
}, []);
...
const deleteCategory = (category) => {
const updatedCategories = categories.filter(
(d) => d.name !== category.name
);
setCategories(updatedCategories);
};
}
我试图删除从子组件传递的类别并相应地更新类别状态。我遇到的问题是我的状态没有保持更新。
例如,当我在某种交互中删除一个类别时,我可以看到一个类别消失了,但是当我删除另一个类别时,我之前删除的那个现在又回来了。
预期:
[category1, category2, category3] =(删除类别3)> [category1, category2]
[category1, category2] =(删除类别2)> [category1]
发生了什么:
[category1, category2, category3] =(删除类别3)> [category1, category2]
[category1, category2, category3] =(删除类别2)> [category1, category3]
在我看来,即使组件被重新渲染并且我可以看到视觉上的变化,因为我更新了我的类别状态,但是在下一个 deleteCategory 事件中,我的状态不知何故没有更新,而是回到了它的原始状态。
我很困惑,因为它在视觉上会更新......这告诉我我的状态已更新?任何人都知道为什么会发生这种情况?
【问题讨论】:
标签: reactjs react-hooks