Redux Dispatch 保持 运行
Redux Dispatch Keeps Running
const fetchUserCognito =async()=>{
dispatch(setCurrentCognitoUserThunk())
}
const fetchUserData=async()=>{
dispatch(getUserData(user.currentUser))
}
const fetchTopCategories=async()=>{
dispatch(getTopCategoryOfUser(String(user.currentUser)))
}
const fetchingProcess=()=>{
fetchUserCognito()
.then(()=>{fetchUserData()})
.then(()=>{fetchTopCategories()})
.finally(()=>dispatch(closeLoader({})))
}
useEffect(() => {
//fetching Datas to display it
fetchingProcess()
orderCategories();
dispatch(closeLoader({}))
}, []);
你好,我正在尝试从我的 api 中获取数据,但是当我无限地尝试像这样的 redux 时 运行 我的调度,我检查了其他问题但没有发现我的任何问题代码
您可以简单地使用当前组件状态来跟踪是否应该执行效果,即
const [loading, setLoading] = useState(true);
如果加载为 true 并在执行之前将其设置为 false,则在 useEffect 中执行您的函数调用。这样您就可以完全控制效果的执行时间和方式。
用 useCallback 包装你的函数也是一个好主意,以确保它们不会在每次更新当前组件的状态时执行。不要忘记将正确的变量依赖项传递给 useCallbacks。
如果您遵循此范例,您的代码将如下所示:
const [loading, setLoading] = useState(true);
const fetchUserCognito =useCallback(async()=>{
dispatch(setCurrentCognitoUserThunk())
}, []);
const fetchUserData=useCallback(async()=>{
dispatch(getUserData(user.currentUser))
}, []);
const fetchTopCategories=useCallback(async()=>{
dispatch(getTopCategoryOfUser(String(user.currentUser)))
}, []);
const fetchingProcess=useCallback(()=>{
fetchUserCognito()
.then(()=>{fetchUserData()})
.then(()=>{fetchTopCategories()})
.finally(()=>dispatch(closeLoader({})))
}, []);
useEffect(() => {
if (loading) {
setLoading(false);
//fetching Datas to display it
fetchingProcess()
orderCategories();
dispatch(closeLoader({}))
}
}, [loading]);
const fetchUserCognito =async()=>{
dispatch(setCurrentCognitoUserThunk())
}
const fetchUserData=async()=>{
dispatch(getUserData(user.currentUser))
}
const fetchTopCategories=async()=>{
dispatch(getTopCategoryOfUser(String(user.currentUser)))
}
const fetchingProcess=()=>{
fetchUserCognito()
.then(()=>{fetchUserData()})
.then(()=>{fetchTopCategories()})
.finally(()=>dispatch(closeLoader({})))
}
useEffect(() => {
//fetching Datas to display it
fetchingProcess()
orderCategories();
dispatch(closeLoader({}))
}, []);
你好,我正在尝试从我的 api 中获取数据,但是当我无限地尝试像这样的 redux 时 运行 我的调度,我检查了其他问题但没有发现我的任何问题代码
您可以简单地使用当前组件状态来跟踪是否应该执行效果,即
const [loading, setLoading] = useState(true);
如果加载为 true 并在执行之前将其设置为 false,则在 useEffect 中执行您的函数调用。这样您就可以完全控制效果的执行时间和方式。
用 useCallback 包装你的函数也是一个好主意,以确保它们不会在每次更新当前组件的状态时执行。不要忘记将正确的变量依赖项传递给 useCallbacks。
如果您遵循此范例,您的代码将如下所示:
const [loading, setLoading] = useState(true);
const fetchUserCognito =useCallback(async()=>{
dispatch(setCurrentCognitoUserThunk())
}, []);
const fetchUserData=useCallback(async()=>{
dispatch(getUserData(user.currentUser))
}, []);
const fetchTopCategories=useCallback(async()=>{
dispatch(getTopCategoryOfUser(String(user.currentUser)))
}, []);
const fetchingProcess=useCallback(()=>{
fetchUserCognito()
.then(()=>{fetchUserData()})
.then(()=>{fetchTopCategories()})
.finally(()=>dispatch(closeLoader({})))
}, []);
useEffect(() => {
if (loading) {
setLoading(false);
//fetching Datas to display it
fetchingProcess()
orderCategories();
dispatch(closeLoader({}))
}
}, [loading]);