javascript - 获取 TypeError:无法在已撤销 Redux 工具包的代理上执行“获取”
问题描述
我正在尝试从本地 sqlite 数据库中检索数据并使用某些值填充 redux 状态,我的减速器如下
getItems: (state) => {
try {
useKnex
.select()
.table("itemTable")
.then(async (data: any) => {
state.push({
itemId: parseFloat(data.itemId),
itemCode: data.itemCode,
itemDescription: data.itemDescription,
itemSellingPrice: parseFloat(data.itemSellingPrice),
itemType: data.itemType,
createdAt: data.createdAt,
updatedAt: data.updatedAt,
});
console.log(data);
})
.catch((err) => {
console.error(`Error: ${err}`);
});
} catch (err) {
console.log(err);
}
}
在我的内容页面上,我使用 useEffected 来获取用于测试目的的数据:
useEffect(() => {
dispatch(queryItemsAction());
});
但是当我运行我得到的所有东西时:
Error: TypeError: Cannot perform 'get' on a proxy that has been revoked
解决方案
一般来说,在redux中,你不能在reducer中有任何副作用——这里发生的是你触发了一个运行的副作用,稍后会尝试在reducer之外写入存储(这违反了redux的另一个规则) .
如果你有这样的副作用,你需要在中间件中处理它。通常,thunk 用于此 - 请阅读Redux Essentials,第 5 部分:异步逻辑和数据获取