react学习(11)

2023-12-27  本文已影响0人  哆啦C梦的百宝箱

1:Redux管理数据流程梳理

2:在react中使用redux,官网要求安装两个其他插件-redux Toolkit和react-redux

npm i @reduxjs/toolkit react-redux

3: store的目录结构设计


image.png

通常集中状态管理都会单独创建一个store目录
通常会有多个子store模块,所以创建一个modules
index.js的作用是组合modules中所有的子模块,并导出store


image.png
import {createSlice} from '@reduxjs/toolkit'
const counterStore = createSlice({
  name:'counter',
  initialState:{count:0},
  //修改状态的方法,同步方法,支持直接修改
  reducers:{
    increment(state){
      state.count++
    },
    decrement(state){
      state.count--
    }
  }
})
//解构出来actionCreater函数
const {increment,decrement} = counterStore.actions
//获取reducer
const reducer = counterStore.reducer
//以按需导出的方式熬出actionCreater
export {increment,decrement}
//以默认导出的方式导出reducer
export default reducer
import {configureStore}from '@reduxjs/toolkit'
import counterReducer from './modules/counterStore'
const store = configureStore({
  reducer: {counter:counterReducer}
})
export default store
  1. 使用react-redux负责把react和redux连接起来,内置provider组件
import {Provider} from 'react-redux'
import store './store'
root.render(
  <Provider store={store}>
    <App/>
  </Provider>
)

5.在react中使用store中的数据,需要用到一个useSelector的钩子函数

import {useSelector} from 'react-redux'
const {count} = useSelector(state => state.counter)
image.png

6.修改store中的数据,需要用到一个useDispatch

import {useSelector,useDispatch} from 'react-redux'
import {increment,decrement} from './store/modules/counterStore'
const {count} = useSelector(state => state.counter)
const dispatch = useDispatch()
<div>
    <button onClick={()=>dispatch(decrement())}>-</button>
    <button onClick={()=>dispatch(increment())}>+</button>
    {count}
</div>

7.组件中使用哪个hook函数获取store中的数据 -useSelector
8.组件中使用哪个hook函数获取dispatch方法 - useDispatch
9.如何得到要提交的action对象
执行store模块中导出的actionCreater方法

上一篇 下一篇

猜你喜欢

热点阅读