1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import { createSlice } from '@reduxjs/toolkit';
- const userSlice = createSlice({
- name: 'user', // 指定状态片段的名称,类似与id的功能
- initialState: {
- name: '郭郭',
- age: 18,
- }, // 指定初始状态,就是默认状态
- reducers: {
- /**
- * 每一个reducer函数 都会接收 两个 参数
- * a: state 表示 当前状态
- * b: action 一个对象,表示一个修改状态的动作 {type: '', payload }
- */
- setName(state, action) {
- //! 在slice下所有的reducer函数中 可以直接修改状态,并且会保持响应式
- state.name = '小爱';
- },
- setAge(state, { payload }) {
- // console.log(`output->action`, action);
- state.age = payload;
- },
- }, // 用来定义修改状态的各种reducer函数
- });
- export default userSlice.reducer;
- // 在 slice对象中 会有一个属性 actions ,类型为对象。存储所有reducer函数对应构建action对象的函数
- // Action Creator
- export const { setName, setAge } = userSlice.actions;
- // 异步处理,需要定义thunk函数
- // export function asyncSetAge(age) {
- // return (dispatch, getState) => {
- // setTimeout(() => {
- // dispatch(setAge(Number(age) || 0));
- // }, 1000);
- // };
- // }
- // 上面代码优化
- export const asyncSetAge = (age) => (dispatch, getState) => {
- setTimeout(() => {
- dispatch(setAge(Number(age) || 0));
- }, 1000);
- };
- // export const asyncSetAge = (dispatch, getState) => {
- // // console.log(dispatch);
- // // console.log(getState);
- // // let state = getState();
- // // console.log(state);
- // setTimeout(() => {
- // dispatch(setAge(Number(age) || 0));
- // }, 1000);
- // };
|