【发布时间】:2020-01-16 23:16:40
【问题描述】:
我正在学习 ReactJS 并尝试使用来自子组件的成分的更新状态来更新父道具。调用 setUserIngredients 并将更新的成分传递给父级。
代码:
const [userIngredients, setUserIngredients] = useState([]);
const removeIngredientHandler = id => {
setLoading(true);
fetch(`https://***************.com/ingredients/${id}.json`,{
method:'DELETE'
}).then(response=>{
setLoading(false);
setUserIngredients(prevIngredients =>
prevIngredients.filter(ingredient =>{
return (ingredient.id !== id)
//return ingredient;
})
);
**props.ingredients(userIngredients);**
//userIngredients is still having old value
//need to check on this
}).catch(error => {
setError(error.message);
})
};
【问题讨论】:
-
设置状态是异步的。
-
谢谢亚历克斯。它部分回答了我的问题。由于我没有使用类组件,如何解决这个问题?
-
基于
setState的类和来自 useState 挂钩的setWhateverState在这种方式下是相同的。它们触发渲染,并且该渲染将具有更新的值。就这么简单。 -
是的,我知道它们会触发渲染,但由于它们本质上是异步的,所以我的父回调在 setState 方法之前执行。根据我的理解,他们在父调用之后触发渲染,这就是为什么父没有最新的成分。
-
对不起,我关闭了这个,我现在看到你的问题。一旦我可以重新打开问题,我会回复的。
标签: reactjs callback react-hooks use-state