gpt4 book ai didi

reactjs - useEffect下如何使用RTK查询?

转载 作者:行者123 更新时间:2023-12-02 18:27:11 24 4
gpt4 key购买 nike

我遇到一种情况,我尝试在用户登录时获取数据,我的结构是我有两个 redux 切片,一个是 userData,另一个是 UserCartData 和

  1. 当用户登录时,如果登录成功,
  2. 然后我会将数据分派(dispatch)到 UserData 中,3、然后我写一个 useEffect 来检查是否有 userData ,
  3. 然后我将使用 UserData 获取 UserCartData

但问题是我无法让 useGetxxxQuery 在 useEffect 下工作,这是我的代码

const Login = () => {
const user = useAppSelector(state=> state.auth);
const dispatch = useAppDispatch();
const [login] = useLoginMutation();
const [showPassword,setShowPassword] = useState<boolean>(false);
useEffect(() => {
if (user!==null){ //fecth userCart data with userData
const {data ,isLoading,isFetching }= useGetCartByIDQuery(user.user?._id!)
}
}, [dispatch])
return (
<Container>
<Wrapper>
<Title>SIGN IN</Title>
<Formik
initialValues={{ email: "", password: "" }}
validationSchema={Yup.object({
password: Yup.string()
.min(8, 'Must be 8 characters or higher')
.required(),
email: Yup.string().email('Invalid email address').required(),
})}
onSubmit = { async (values, actions) => {
try{
const result = await login(values);
if("data" in result){
//console.log(result.data.data)
dispatch(setCredentials({user:result.data.data.findUser,token:result.data.data.cookie}))

}else{
const err = (result.error as RequestError).data.message
if(err.includes("password")){
actions.setErrors({password:err})
}else if(err.includes("Facebook")){
actions.setErrors({email:err})
}
}
}catch(err){
console.log(err)
}
}}>
//....unrelevant code

最佳答案

这里不需要 useEffect,您可以简单地使用 skipToken:

import {skipToken} from '@reduxjs/toolkit/query'

const {data, isLoading, isFetching } = useGetCartByIDQuery(user.user ? user.user._id : skipToken)

关于reactjs - useEffect下如何使用RTK查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69985937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com