我正在尝试从createAsuncThunks迁移到RTK查询。在页面加载时,我检查是否有没有用户在商店,然后从后端获取用户和其他数据。
这段代码可以很好地与createAsuncThunks,但它应该如何与RTK查询?
const InitApp = () => {
const dispatch = useAppDispatch();
const user = useAppSelector((state) => state.user);
const ignore = useRef(false);
useEffect(() => {
if (!user && !ignore.current) {
Promise.all([
dispatch(getUser()),
dispatch(getRawMedias()),
dispatch(getFaces()),
dispatch(getProjects()),
]);
}
return () => {
ignore.current = true;
};
}, [dispatch, user]);
if (!user) {
return <Loader areaLoader />;
}
return <Outlet />;
};
我认为这种方法是错误的,但不清楚如何正确地做到这一点:
const {data} = useGetUserQuery()
useEffect(() => {
if (!data) {
// can't call other hooks here
}
}, [data])
1条答案
按热度按时间gajydyqb1#
你可以传递
skip
参数,并将其与initalState组合,如下所示:现在,这将仅在没有用户时触发,如果有用户,数据将等于用户