当前位置: 首页 > news >正文

react-redux

Redux

React-redux基本使用

  • 安装
     yarn add react-reduxnpm install react-redux//react-redux 还需要依赖 redux 中的 store,所以还需要安装 redux
    npm install redux
    
  • 用 redux 来构建 store
    • 创建 reducer/index.js 文件,构建reducer来响应 actions
    • 创建 store/index.js 文件,通过createStore方法,把reducer 传进来
      //store/index.jsimport  { createStore } from "redux"import { reducer } from "./reducer"export default createStore(reducer)// reducer/index.js const initState = { count:0 }export.reducer = ( state = inistate, action ) => {switch (action.type){case 'add_action':return {count: state.count + 1}default: return state;}}
    
    • 在 app.js中引入 store
  • 引入 Provider 组件
    • 在app.js 中 导入 Provider 组件
    • 利用 Provider 组件将整个结构进行包裹,并传递 store
     import { Provider } from 'react-redux'function App(){return (<Provider store={store}> ... </Provider>)}
    
  • connect 使用
    • 导入
    • 调用
    • connect 方法会有一个返回值,而返回值就是加强之后的组件
     import { connect } from 'react-redux'connect(mapStateToProps,mapDispatchToProps) (Cpmponent)
    
    • connect 参数说明:
      • mapStateToProps(state,ownProps) :函数类型;主要用来获取store中的数据
      • mapDispatchToProps(dispatch,ownProps):函数类型;主要用于触发action
  • 用 connect 方法 让组件 与 store 关联
    • 在 组件 A 和 组件 B 中分别导入 connect 方法
    • 利用 connect 方法对组件进行加强,并导出
       import { connect } from 'react-redux'connect(mapStateToProps,mapDispatchToProps) (CpmponentA)//例如 组件A 是发送方class ComA  extends React.Component{handleClick = () => {this.props.sendAction()}render(){return <button onClick={this.handleClick}> + </button>}}
      const mapDispatchToProps = dispatch => {return {sendAction: () => {dispatch({type: 'add_action'})}}
      }
      export default connect(null,mapDispatchToProps) (ComA)
      //例如 组件B 是接收方class ComB  extends React.Component{render(){return <div>{this.props.count} </div>}}
      const mapStateToProps = state => {return state}
      }
      export default connect(mapStateToProps) (ComB)
      

react-redux 原理图

在这里插入图片描述

http://www.lryc.cn/news/9431.html

相关文章:

  • 算法刷刷刷| 回溯篇| 子集问题大集合
  • 合并两个有序数组-力扣88-java
  • 2022「大厂可观测」重磅回顾,12场直播,15位技术大咖洞见可观测
  • CMMI-配置管理(CM)
  • 网络编程套接字Socket
  • Linux进程概念(二)
  • 墨天轮【第二届数据库掌门人论坛】圆满收官 | 含嘉宾精彩观点回顾
  • Redis之集群搭建
  • 31-Golang中的二维数组
  • <<Java开发环境配置>>6-SQLyog安装教程
  • MySQL 中的 distinct 和 group by 哪个效率更高
  • 计算机相关专业毕业论文选题推荐
  • 网络编程套接字之TCP
  • 网络与串口调试工具TCPCOM
  • 数据库常用命令
  • PTA复习
  • TypeScript 学习之接口
  • 原码反码补码
  • 大数据选股智能推荐系统V1.0-1
  • 调研生成GIF表情包之路
  • 【RocketMQ】源码详解:生产者启动与消息发送流程
  • 信息安全(一)
  • 企业多会场视频直播(主会场、分会场直播)实例效果
  • 线性代数速览(一)行列式
  • 恭喜山东翰林“智慧园区管理系统”获易知微可视化设计大赛二等奖
  • gulp简单使用
  • ce认证机构如何选择?
  • 全网招募P图高手!阿里巴巴持续训练鉴假AI
  • webrtc QOS笔记一 Neteq直方图算法浅读
  • 细分和切入点