react学习(11)

简介: react学习(11)

1:Redux管理数据流程梳理

为了职责清晰,数据流向明确,redux把整个数据修改的流程分成了三个核心概念,分别是state,action,reducer
1.state一个对象,存放着我们管理的数据状态。
2.action一个对象,用来描述你想怎么改数据。
3.reducer一个函数,根据action的描述生成一个新的state。
image.png

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

redux-toolkit(RTK)官方推荐编写redux逻辑的方式,是一套工具的集合集,简化书写方式。(简化store的配置方式;内置immer支持可变式状态修改;内置thunk更好的异步创建)
react-redux连接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

使用react-redux负责把react和redux连接起来,内置provider组件

import {
   Provider} from 'react-redux'
import store './store'
root.render(
  <Provider store={
   store}>
    <App/>
  </Provider>
)

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

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

image.png
修改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方法

相关文章
|
2月前
|
前端开发 JavaScript
React学习之——条件渲染
【10月更文挑战第16天】React 中没有像Vue中v-if这种指令。React 中的条件渲染和 JavaScript 中的一样,使用 JavaScript 运算符 if 或者条件运算符去创建元素来表现当前的状态,然后让 React 根据它们来更新 UI。
|
3月前
|
前端开发 JavaScript
学习react基础(3)_setState、state、jsx、使用ref的几种形式
本文探讨了React中this.setState和this.state的区别,以及React的核心概念,包括核心库的使用、JSX语法、类与函数组件的区别、事件处理和ref的使用。
83 3
学习react基础(3)_setState、state、jsx、使用ref的几种形式
|
3月前
|
前端开发 JavaScript
react学习(13)props
react学习(13)props
|
3月前
|
前端开发
学习react基础(2)_props、state和style的使用
本文介绍了React中组件间数据传递的方式,包括props和state的使用,以及如何在React组件中使用style样式。
38 0
|
1月前
|
前端开发 JavaScript 安全
学习如何为 React 组件编写测试:
学习如何为 React 组件编写测试:
40 2
|
2月前
|
资源调度 前端开发 JavaScript
React进阶学习
React进阶学习
16 1
|
2月前
|
JSON 前端开发 JavaScript
React 进阶阶段学习计划
React 进阶阶段学习计划
|
3月前
|
XML JavaScript 前端开发
学习react基础(1)_虚拟dom、diff算法、函数和class创建组件
本文介绍了React的核心概念,包括虚拟DOM、Diff算法以及如何通过函数和类创建React组件。
33 3
|
3月前
|
前端开发
react学习(17)回调形式的ref
react学习(17)回调形式的ref
|
3月前
|
前端开发
react学习(15)函数式组件中使用props
react学习(15)函数式组件中使用props