react中redux基本使用二
1. action传参,用payload属性接收
<button onClick={()=>dispatch(addNum(2))}> +2</button>

2. redux 中异步 操作,与同步类似,需要比同步多封装一个函数// 使用RTK创建store, createSlice 创建reducer的切片
// 使用RTK创建store, createSlice 创建reducer的切片
import {createSlice } from "@reduxjs/toolkit";
const userSlice = createSlice({ // 需要一个配置对象作为参数,通过对象的不同属性来指定它的配置
name:'user', // 用来自动生成 action 中的 type
initialState:{ // state的初始值
user:{
id:'111',
name:"zhang san",
age:18
}
},
// 指定state的各种操作,直接在对象中添加方法
reducers:{
setUser: (state,action)=>{
state.user = action.payload;
}
}
})
// 切片对象会自动的帮助我们生成action
const { setUser } = userSlice.actions
// 异步网络请求(模拟)
function queryUser(){
return new Promise(resolve=>{
setTimeout(()=>{
resolve({id:'222',name:'li ha ha',age:18})
},200)
})
}
// 封装一个函数,调用同步方法去修改值
function getAsyncUser(){
return async (dispatch)=>{
const user = await queryUser();
dispatch(setUser(user))
}
}
export { getAsyncUser}
// 导出 reducer
export default userSlice.reducer
使用的时候也是通过dispatch 触发
import { useDispatch } from "react-redux"
import{getAsyncUser} from './store/modules/userStore'
// 通过useDispatch() 来获取派发器对象
const dispatch = useDispatch()
dispatch(getAsyncUser())
浙公网安备 33010602011771号