react技术全家桶(46)react-redux使用

1.所有的UI组件都应该包裹一个容器组件,他们是父子关系。
2.容器组件是真正和redux打交道的 里面可以随意的使用redux的api
3.UI组件中不能使用任何redux的API
4.容器组件会传给UI组件两个东西 a.redux中所保存的状态 b.用于操作状态的方法
5.容器给UI传递:状态 操作状态的方法 均通过props传递

UI组件放在components目录中
容器组件放在container目录中

安装 npm i react-redux

在container目录汇总建立count目录 并且在其下建立index.jsx
import CountUI from ‘./commponents/Count’ //引入Count组件
import store from ‘./redux/store’ //引入store
import {connect} from ‘react-redux’ //引入用于连接UI组件和redux

connect()() 意思是 connect是一个函数 这个函数的返回值还是一个函数 connect()()返回的是一个容器组件
const countContainer = connect()(CountUI) 将容器和UI组件绑定 在使用的时候就不用使用UI组件 而是使用容器组件 自然会将UI组件渲染
export default countContainer;

store不能再容器中引入 因为会报错 所以需要删除容器中的 import store from ‘./redux/store’
这个是容器Count不是组件Count 在哪里使用 就用props方式传递store 这样容器就有了store

容器组件和UI组件是父子关系,这是源码操作的不是我们手写标签组件形成的父子关系,那么容器组件如何给UI组件传递参数呢
connect在调用的时候需要传递两个函数 第一个函数的返回值 作为状态传递给了UI组件 因为是通过props传递 肯定需要key的 所以第一个返回函数肯定是一个对象 参数就是store.getState()的结果 第二个函数也是放回一个对象 返回的是操作状态的方法。 如jia:()=>{加法的逻辑} jian:()=>{减法的逻辑} 第二个函数的参数是dispatch

完整代码:
react技术全家桶(46)react-redux使用_第1张图片
优化:语法糖:
react技术全家桶(46)react-redux使用_第2张图片
使用了react-redux后 就不需要检测redux了,connect的有检测管理状态的功能。
使用了react-redux后 就不需要给每个容器组件使用props方式传递props了:
在入口文件中:
import store form ‘./reudx/store’
import {Provider} from ‘react-redux’


将UI组件和容器组件整合
react技术全家桶(46)react-redux使用_第3张图片

你可能感兴趣的:(react.js,javascript,前端)