问题描述
我正在学习反应钩子。我正在模拟数据js调用“ MockFireBase.js”,如下所示:
const userIngredientsList = [];
export const Get = () => {
return userIngredientsList;
}
export const Post = (ingredient) => {
ingredient.id = userIngredientsList.length + 1;
userIngredientsList.push(ingredient);
return ingredient;
}
然后我的react hooks组件“ Ingredients.js”将调用此模拟实用程序,如下所示:
const Ingredients = () => {
const [userIngredients,setUserIngredients] = useState([]);
// only load one time
useEffect(() => { setUserIngredients(Get()); },[]);
const addIngredienHandler = ingredient => {
let responsData = Post(ingredient);
setUserIngredients(preIngredients => {
return [...preIngredients,responsData]
});
}
return (
<div className="App">
<IngredientForm onAddIngredient={addIngredienHandler} />
<section>
<IngredientList ingredients={userIngredients} />
</section>
</div>
);
)
}
当我添加第一个成分时,它添加了两个成分(当然,我在console.log中得到了相同的关键问题)。然后我添加了第二种成分就可以了。
如果我按如下所示删除useEffect代码,它将很好用。
// only load one time
useEffect(() => { setUserIngredients(loadedIngredients); },[]);
我想知道如果我使用useEffect,我在上面做错了什么
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)