redux 条件为真后触发RTK派单?

uqcuzwp8  于 2023-11-19  发布在  其他
关注(0)|答案(2)|浏览(116)

我有一个RTK查询,需要几秒钟才能获取数据。当isSuccess为真时,我将尝试启动调度。

const router = useRouter();
const num = router.query.id;
const { data, error, isLoading, isSuccess } = useModByIdQuery(num);
const dispatch = useDispatch();

  {
    isSuccess && dispatch(addCurrentMod(data));
  }

字符串
问题是它会触发多次(确切地说是4次)。我试着把它放在一个useEffect中,但由于数据需要几秒钟才能取出调度错误(因为它是未定义的)。
我真的不知道最好的方法来解决这个问题?
谢谢.

axr492tv

axr492tv1#

RTK将保持触发请求一旦组件加载,它也将保持触发,即使输入参数不可用,
这可以通过skip params来控制,以便进行条件提取

const Pokemon = ({ name, address }) => {
  const { data, error, status } = useGetPokemonByNameQuery(name, {
    skip : (!name || !address),
  });

  return (
    <div>
      {name} - {status}
    </div>
  );
};

字符串
如果名称或地址不可用,则将跳过API调用

u59ebvdq

u59ebvdq2#

首先,给出的信息不足以理解你想做什么。我仍然可以看到你的响应依赖于isSuccess true,如果你控制isSuccess,你会发现多个true false值,所以尝试只获取最后一个值(检查影响isSuccess API调用的地方)

相关问题