【问题标题】:Getting TypeError: Cannot perform 'get' on a proxy that has been revoked Redux toolkit获取 TypeError:无法在已撤销 Redux 工具包的代理上执行“获取”
【发布时间】:2023-03-25 20:30:01
【问题描述】:

我正在尝试从我的本地 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

【问题讨论】:

    标签: javascript redux redux-toolkit


    【解决方案1】:

    通常在 redux 中,您不得在 reducer 中有任何副作用 - 这里发生的情况是,您正在触发一个副作用,该副作用运行并将尝试写入 reducer 外部的存储稍后(这打破了 redux 的另一条规则)。

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

    【讨论】:

      猜你喜欢
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-01
      • 2021-02-14
      • 2021-10-25
      • 2020-12-17
      • 2021-04-26
      • 2018-08-13
      相关资源
      最近更新 更多