javascript - 如何在循环中有条件地调用 RTK 查询钩子(Hook),尽管我们不能在 useEffect 中使用它

标签 javascript redux react-hooks react-redux rtk-query

useEffect(() => {
  const fetchServiceProducts = async () => {
    if (isSuccess === true && data) {
      for (let i = 0; i < data?.data.length; i++) {
        const serviceid = data.data[i].service_id;
        console.log(serviceid, "serviceid");
        const { data: serviceProduct } = await useServicedataByidQuery(serviceid).refetch();
        console.log(serviceProduct, "serviceata");
      }
    }
  };
  fetchServiceProducts();
}, []);

由于我们无法在回调中添加 RTKQ Hook ,因此如何才能实现这一点并在循环长度完成后调用我的查询并获取收集的数据?

最佳答案

您可能希望使用“惰性”版本的查询。这将返回一个可以随意调用的“触发”函数。请参阅useLazyQuery了解更多详情。

示例:

const [trigger] = useLazyServicedataByidQuery(/* query options */);

useEffect(() => {
  const fetchServiceProducts = async () => {
    if (isSuccess && data) {
      for (let i = 0; i < data?.data.length; i++) {
        const serviceId = data.data[i].service_id;
        console.log({ serviceId });

        const { data: serviceProduct } = await trigger(serviceId);
        console.log({ serviceProduct });
      }
    }
  };

  fetchServiceProducts();
}, []);

关于javascript - 如何在循环中有条件地调用 RTK 查询钩子(Hook),尽管我们不能在 useEffect 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76331526/

相关文章:

javascript - ajax 调用中返回 100 个项目的限制 - JavaScript

javascript - 在 enzyme 浅渲染中将 jest.fn() 函数传递给 mapDispatchToProps

javascript - React-Redux - 切换按钮以显示和隐藏详细信息

javascript - 如何在两个 React 自定义 Hook 之间拥有共同的状态?

javascript - 使用 jQuery AJAX GET 和 AngularJS 不更新 View

javascript - D3 径向树状图缩放抖动

javascript - Js 闭包 : Function fails during second invoke

reactjs - 实体中的 Redux UI 状态

reactjs - 在 React 中显示 TinyMCE 内容

reactjs - 根据 bool 值 react 更新 Prop 和渲染