Je souhaite implémenter la logique d'autorisation des utilisateurs lors du chargement de la page. Au départ, je voulais vérifier s'il y avait un token dans le cookie (checkUserToken
),如果有或没有 - 调用另一个函数(fetchUserData
),该函数将来会向服务器发出请求。最后,当服务器响应时 - 调用第三个函数(setUserData
),该函数将使用用户数据填充userData
'use client' import { createSlice } from "@reduxjs/toolkit"; import { getCookie } from '@/app/untils/Cookies'; const initialState = { userData: null } export const userSlice = createSlice({ name: "userData", initialState, reducers: { checkUserToken: () => { console.log('chekc') const token = getCookie('user-token'); console.log(token) if (token) return fetchUserData(token) else return fetchUserData(false) }, fetchUserData: async (state, action) => dispatch => { return console.log('FETCH') // console.log(state) // console.log(action) }, setUserData: (state, action) => { console.log('SET USER') console.log(action) console.log(state) } } }) export const { checkUserToken, fetchUserData, setUserData } = userSlice.actions export default userSlice.reducer
Comment puis-je implémenter des fonctionnalités similaires dans ma tranche ?
Les fonctions de réduction sont des fonctions pures, elles n'effectuent pas d'effets secondaires comme des actions de répartition.
checkUserToken
不能分发任何动作,fetchUserData
不能返回函数值。在我看来,checkUserToken
和fetchUserData
En fait, une action asynchrone. Créez une action de réflexion pour eux.Exemple :
Veuillez noter que
fetchUserData
动作可以直接访问 cookies/token,fetchUserData.fulfilled
reducer case 也可以设置/更新用户数据状态。这意味着setUserData
和checkUserToken
actions peuvent être inutiles.