# react-exe **Repository Path**: ax328h/react-exe ## Basic Information - **Project Name**: react-exe - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-08 - **Last Updated**: 2026-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1.求和案例\_redux 精简版 (1)去除 Count 组件自身的状态 (2)src 下建立: -redux -store.js -count_reducer.js (3)store.js 1)引入 redux 中 createStore 函数,创建一个 store 2)createStore 调用时要传入一个为其服务的 reducer 3)记得暴露 store 对象 (4)count_reducer.js 1)reducer 的本质是一个函数,接口:preState,action,返回加工后的状态 2)reducer 有两个作用,初始化状态,加工状态 3)reducer 被第一次调用时,是 store 自身触发的,传递的 preState 是 undefined;传递的 action 是如{type:"@@REDUX/INIT 1.3.3.B",} (5)在 index.js 中监测 stroe 中状态的改变,一旦发生改变重新渲染 备注:redux 中只负责管理状态,至于状态的改变驱动着页面的显示,要靠我们自己写 ## 2.求和案例\_redux 完整版 新增文件: 1.count_action.js 专门用于创建 action 对象 2.constant.js 放置容易写错的 type 值 ## 3.求和案例\_redux 异步 action 版 (1) 明确:延迟的动作不想交给组件自身,想交给 action (2) 何时需要异步 action:想要对状态进行操作,但是具体的数据要靠异步任务返回。 (3) 具体编码: 1)yarn add redux-thunk ,并配置 thunk 2)创建 action 的函数不再返回一般对象,而是一个函数,该函数中写异步任务 3)异步任务有结果后,分发一个同步的 action 去真正操作数据 4)备注:异步 action 不是必须要写的,完全可以自己等待异步任务的结果了再去分发同步 action ## 4.求和案例\_react_redux 的基本使用 (1)明确两个概念 1)UI 组件:不能使用任何 rendux 的 api,只负责页面的呈现、交互等 2)容器组件:负责和 redux 通信,将结果交给 UI 组件 (2)创建一个容器组件---靠 react-redux 的 connect 函数 connect(mapStateToProps, mapDispatchToProps)(UI 组件) mapStateToProps:映射状态,返回值为一个对象 mapDispatchToProps:映射操作状态的方法,返回值为一个对象 (3)备注 1:容器组件中的 state 是靠 props 传进去的,而不是在容器组件中直接引入 (4)备注 2:mapDispatchToProps 也可以是一个对象 ## 5.求和案例\_react_redux 优化 (1)UI 组件和容器组件混合成一个组件 (2)无需自己给容器组件传递 store,给包裹一个即可 (3)使用了 react-redux 后也不用再自己检测 redux 中的状态改变了,容器组件可以自动完成这个工作 (4)mapDispatchToProps 也可以简写成一个对象 (5)一个组件要和 redux"打交道"要经过那几步? 1.定义好 UI 组件--不暴露 2.引入 connect 生成一个容器组件,并暴露,写法如下 connect( state=>({key:value}),//映射状态 {key:xxxxAction}//映射操作状态的方法 )(UI 组件) 3.在 UI 组件中通过 this.props.xxxxx 读取和操作状态 ## 6.求和案例\_react_redux 数据共享版 (1)定义一个 Person 组件,和 Count 组件通过 redux 共享数据 (2)为 Person 组件编写 reducer、action 配置 constant 常来那个 (3)重点:Person 的 reducer 和 Count 的 reducer 要使用 combineReducers 进行合并, 合并后的总状态是一个对象!!!! (4)交给 state 的是总 reducer,最后注意在组件中取出状态的时候,记得“取到位” ## 7.求和案例\_react_redux 开发者工具的使用 (1)yarn add redux-devtools-extension (2)store 中进行配置 import {composeWithDevTools} from "redux-devtools-extension" const store = createStore(allReducer,composeWithDevTools(applyMiddleware(thunk))); ## 纯函数 一类特别的函数:只要是同样的输入(实参),必定得到同样的输出(返回) 必须遵守以下一些约束 1.不得改写参数数据 2.不会产生任何副作用,例如网络请求,输入和输出设备 3.不能调用 Date.now()或者 Math.random()等不纯的方法 redux 的 reducer 函数必须是一个纯函数 ## 8.求和案例\_react_redux 最终版 (1)所有变量名字要规范,尽量触发对象的简写形式 (2)reducers 文件夹中,编写 index.js 专门用于汇总并暴露搜友的 reducer