Getting TypeError: Cannot perform 'get' on a proxy that has been revoked Redux toolkit

Getting TypeError: Cannot perform 'get' on a proxy that has been revoked Redux toolkit

我正在尝试从我的本地 sqlite 数据库中检索数据并使用某些值填充 redux 状态,我的 reducer 如下

    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 中,你 不能 在减速器中有任何副作用 - 这里发生的是你正在触发一个 side-effect 运行并将尝试稍后写入 reducer 之外的 store(这打破了 redux 的另一个规则)。

如果您有这样的 side-effect,您需要在中间件中处理它。通常,thunk 用于此 - 请阅读 Redux Essentials, Part 5: Async Logic and Data Fetching