打赏

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())

  

posted on 2024-04-08 21:18  jlyuan  阅读(7)  评论(0编辑  收藏  举报

导航