javascript - 在 react js 中使用 Context 和 hook
问题描述
是我再次... 3小时前我有一个关于如何使用上下文和usestate做出反应的问题,但我自己找到了答案,但现在,我遇到了另一个麻烦,在我的情况下是关于setState或setcategoria,所以这个是组件:
分类状态.js
const [ categorias, setCategorias ] = useState(Data);
const AddCategoria = (description, idPadre) => {
categorias.push({
id: categorias.length,
description: description,
idPadre: idPadre
});
console.log(categorias);
return true;
};
const DelCategoria = (id) => {
const newData = categorias.filter( item => item.id !== id );
setCategorias({ newData });
return true;
};
return(
<CategoriaContext.Provider
value={{
categorias: categorias,
GetCategorias,
AddCategoria,
DelCategoria
}}
>
{props.children}
</CategoriaContext.Provider>
)
GetCategorias、Addcategorias 函数运行良好!!!但问题出在 DelCategoria 中,这是错误:
Uncaught TypeError: categorias.map is not a function
所以如果我在 setCategorias({ newData }); 在函数 DelCategoria 中,没有显示错误,但幸运的是变量 categoria 没有更新,我认为错误是存在的。
所以我从我的组件 AllCat.js 中调用函数 DelCategoria
.
.
.
const { categorias, GetCategorias, DelCategoria } = useContext( CategoriaContext );
useEffect(() => {
GetCategorias();
},[])
.
.
.
<button onClick={ () => DelCategoria(item.id) } >
Del Item
</button>
我的意图是使用 context 和 usestate 在 react js 中创建一个简单的示例,我想了解这个 api(使用上下文)
谢谢!!
解决方案
您将 categorias 属性设置为对象,而不是数组
setCategorias({ newData });
只是做一个setCategorias(newData)
,我认为这应该工作
推荐阅读
- xamarin.android - Xamarin Android 中的 Google Drive Rest API
- java - 如何在 Hibernate 中正确映射父子(同表)关系?
- sql-server - 从字符串转换日期和/或时间时转换失败。mule 4 批量插入 SQL Server 时出错
- python - python用户对函数的输入
- docker - 从 docker 上正在运行或停止的容器中获取镜像名称
- android - WorkManager 在设备和某些模拟器中未按预期工作
- python - 如何创建子流程“if else”条件
- python-3.x - PIN 猜谜游戏的 While 循环
- networking - TCP 连接的初始序列号 (ISN) 范围
- javascript - 使用 es6 语法处理从 Promise 返回的值 [已编辑]