12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import {createSlice} from '@reduxjs/toolkit';
- const userSlice = createSlice({
- // name:给action对象中的type属性指定命名
- name: 'user1',
- // initialState:指定初始状态值
- initialState: {
- name:'胡图图',
- age: 3,
- address: '翻斗花园'
- },
- // 方法:存放该切片中定义的各种修改状态的reducer函数
- reducers: {
- setName(state,{payload}) {
- // console.log(state,action)
- // state.name = action.payload;
- state.name = payload;
- },
- setAge(state,{payload}) {
- state.age+=payload
- }
- }
- })
- export default userSlice.reducer;
- // 在slice对象中 有一个actions属性 类型是对象
- // 存储所有reducer函数中的对象构建的方法
- export const {setName,setAge} = userSlice.actions;
- /**
- * Redux原生不支持一步处理机制
- * 需要通过一些中间件去完成
- * RTK中内置了Thunk中间件可以完成一步任务处理
- * 在UI组件调用dispatch时,可以传入一个Action对象,
- * 还可以传入一个thunk函数
- * 继而处理异步任务,处理后 在通过dispatch中的action去修改状态
- *
- *
- * 什么是Thunk函数?
- * 1.可以是普通函数,也可以是async函数
- * 2.函数会接受两个参数:dispatch 和 getStaåååe 函数
- * 3.dispatch:用来异步处理后,执行状态修改
- * 4.getState:获取完整的store中的状态对象
- */
- // export function asyncSetAge(age) {
- // return (dispatch,getState) => {
- // setTimeout(()=>{
- // dispatch(setAge(age))
- // },2000)
- // }
- // }
- export const asyncSetAge = (age) => (dispatch,getState) => {
- setTimeout(()=>{
- dispatch(setAge(age))
- },3000)
- }
|