Я использую redux-toolkit и имею 2 фрагмента: auth и profile
auth = ›обрабатывать информацию о токене
profile =› обрабатывать информацию об учетной записи пользователя
Когда пользователь пытается войти в систему, я отправляю запрос в api, который возвращает мне токен пользователя и информацию об учетной записи. Тогда мне нужно сохранить эту информацию. Я помещаю токен в соответствующее поле (в том же срезе). И мне нужно поместить информацию о моей учетной записи в срез профиля (обработка входа в систему происходит в срезе аутентификации). Теперь я просто отправляю действие setProfile из среза auth.
Это анти-шаблон для отправки действия профиля из среза аутентификации? Или мне нужно перенести эту логику из редукции в компонент? Или выполнить вход в систему за пределами среза? Или мне нужно хранить все в одном куске?
// PROFILE SLICE | profile.js
const initialState = {
data: {},
status: 'idle'
}
export const profileSlice = createSlice({
name: 'profile',
initialState,
reducers: {
setProfile(s, {payload: profile}) {
s.profile = profile
}
}
})
export const {setProfile} = userSlice.actions;
export default profileSlice.reducer
// AUTH SLICE | auth.js
import {setProfile} from './profile' // import action creator from profile slice
const initialState = {
token: null,
status: 'idle'
}
export const authSlice = createSlice({
name: 'auth',
initialState,
reducers: {
setToken(s, {payload: token}) {
s.token = token
}
}
})
export const login = ({email, password}) => dispatch => {
return api.auth.login({
email,
password
})
.then(res => {
const {token, ...profile} = res.data
dispatch(setToken(token))
dispatch(setProfile(profile)
})
}
export const {setToken} = authSlice.actions;
export default authSlice.reducer