我有一个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中,但由于数据需要几秒钟才能取出调度错误(因为它是未定义的)。
我真的不知道最好的方法来解决这个问题?
谢谢.
2条答案
按热度按时间axr492tv1#
RTK将保持触发请求一旦组件加载,它也将保持触发,即使输入参数不可用,
这可以通过
skip
params来控制,以便进行条件提取字符串
如果名称或地址不可用,则将跳过API调用
u59ebvdq2#
首先,给出的信息不足以理解你想做什么。我仍然可以看到你的响应依赖于isSuccess true,如果你控制isSuccess,你会发现多个true false值,所以尝试只获取最后一个值(检查影响isSuccess API调用的地方)