我复读后有状态!但我想要调度后的状态,它在useEffect中,比如获取数据加载,怎么样



我在重新发布后得到了状态!但我想要调度后的状态,它在useEffect中,比如获取数据加载,怎么样?

const [que, setQue] = useState('');
const ques = useSelector(state => state.getQuestions.data);
useEffect(() => {
dispatch(GetQuestion({ org_id: 3 }))
setQue(ques)
console.log("fetch: ", ques)
console.log("que: ", que)
setLoading(false)
}, [dispatch])

基本上,您正在对每个渲染进行调度,这将导致另一个重新渲染。您可以简单地检查que(队列?(,然后如果为空则进行分派,或者如果选择器正确返回则进行设置。

const [que, setQue] = useState(false);
const ques = useSelector(state => state.getQuestions.data);
useEffect(() => {
if(!que && ques) {
setQue(ques)
console.log("fetch: ", ques)
console.log("que: ", que)
setLoading(false)
} else if(!que && !ques) {
dispatch(GetQuestion({ org_id: 3 }))
}
}, [dispatch, ques])

您将需要另一个像这样的useEffect:

useEffect(() => {
dispatch(GetQuestion({ org_id: 3 }))
setQue(ques)
console.log("fetch: ", ques)
console.log("que: ", que)
setLoading(false)
}, [])

它将在加载时执行(但要小心,它也将在每次重新渲染该组件时执行(

最新更新