【发布时间】:2021-02-21 21:26:41
【问题描述】:
我是初学者,不知道createSlice和createReducer有什么区别。
我应该选择哪个?
其次,我今天看了一个教程。这家伙刚刚制作了一个 store.js 文件和一个 userslice.js 文件。 非常简单。
但他使它与 redux 文档有点不同。他在 userSlice.js 的末尾导出了三个 CONST,而不是文档中的两个。 (我已发表评论) 如果我把 state.user.user 改成 state.user.wtf……过一会我会运行出错,因为有些组件已经无法访问用户对象了。
用户切片
import { createSlice } from '@reduxjs/toolkit';
export const userSlice = createSlice({
name: "user",
initialState: {
user: null,
},
reducers: {
login: (state, action) => {
state.user = action.payload;
},
logout: (state) => {
state.user = null;
},
},
});
export const { login, logout } = userSlice.actions;
export const selectUser = (state) => state.user.user; // What is that ? and why is it state.user and then a third user Object ???
export default userSlice.reducer;
在应用程序中。 js他发出了那个命令
const user = useSelector(selectUser);
instead
const user = useSelector(state => state.user.user);
我真的不明白其中的区别
store.js 文件
import { configureStore } from '@reduxjs/toolkit';
import userReducer from '../features/userSlice'
export default configureStore({
reducer: {
user: userReducer,
},
});
有人可以解释一下吗。我很困惑
【问题讨论】:
-
既然你是新手,那么你想要
createSlice——这是最简单的方法!像selectUser这样的选择器函数从整个状态 中选择值,而不仅仅是从这个切片中。在store.js文件中,这部分reducer: { user: userReducer, }(称为“reducer 映射对象”)意味着整个状态是一个具有user属性的对象,该属性由userReducer控制。所以state.user为您获取用户切片的值。但是我们想要该切片中的user属性,所以它是state.user.user
标签: redux react-redux redux-toolkit