react-redux
Redux
- 是js容器,用于进行全局的 状态管理
- 它可以用在react, angular, vue等项目中, 但基本与react配合使用
- 三大核心:
- 单一数据源
- 整个应用的state被存储在一棵 object tree中,并且这个 object tree只存在于一个唯一的 store 中
- State是只读的
- 唯一改变state的方法就是触发action,action 是一个用来描述已发生事件的普通对象
- 使用纯函数来修饰
- 为了描述 action 如何改变state tree,需要编写 reducers;
- reducer 是纯函数 ,它接收先前的 state 和 action,并且返回新的 state.
- 可以复用,可以控制顺序、传入附加参数
Redux组成
- state:
- 指传递的 数据 ;可以分为以下三类
- DomainDate: 服务端的数据
- UI state: 展示ui 状态等
- App state: App级别的状态;
- Action:
- 把数据从应用传到 store 的载体,它是 store 数据的唯一来源。一般来说可以通过 store.dispatch() 将 action 传递给 store
- js对象; 用来描述已发生事件的普通对象; 对象内部必须要有一个 type 属性来表示要执行的动作
- Reducer:
- 函数
- 用来响应发送过来的action,然后经过处理,把 state 发送给 store
- 注意:需要 return 返回值; 函数会接受两个参数,第一个是初始化的state,第二个是action
- Store :
- store就是把 action 与 reducer 联系到一起的对象
- 通过creatStore创建
React-redux
React-redux概述
- react-redux 是 redux 官方出的; 用于配合 react 的绑定库
- react-redux 能够使你的 react 组件从 redux store 中方便的读取数据, 并且向 store 中分发 actions 以此来更新数据
- 两个重要成员: Provider 和 connect
- Provider
- Provider 包裹 在根组件最外层,使所有组件都可以拿到 state
- Provider 接收 store 作为props,然后通过 context 往下传递,这样 react中任何组件都可以通过 cntext 获取到 store
import { Provider } from "react-redux";ReactDOM.render(<Provider store={store}>...字组件...</Provider>,document.getElementById('root'));
- connect
- Provider 内部组件如果想要使用到 state中的数据,就必须要 connect 进行一层包裹,换句话说就是必须要被 connect 进行加强
- connect 就是方便我们组件能够获取到 store中的 state
- 单一数据源
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 原理图
相关文章:
react-redux
Redux 是js容器,用于进行全局的 状态管理它可以用在react, angular, vue等项目中, 但基本与react配合使用三大核心: 单一数据源 整个应用的state被存储在一棵 object tree中,并且这个 object tree只存在于一个唯一的 store 中 State是只读的…...
算法刷刷刷| 回溯篇| 子集问题大集合
78.子集 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出:[[],[1],[2],[1…...
合并两个有序数组-力扣88-java
一、题目描述给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合…...
2022「大厂可观测」重磅回顾,12场直播,15位技术大咖洞见可观测
回首2022年,注定是意义非凡的一年。新冠疫情继续肆虐全球,中国疫情全面放开,神舟十四号与神舟十五号成功会师,俄乌冲突带来深远影响,阿根廷再次问鼎世界杯梅西圆梦,英国女王逝世......件件事都备受关注。 …...
CMMI-配置管理(CM)
一、概述配置管理(Configuration Management, CM)的目的在于使用配置识别、配置控制、配置状态记录与报告以及配置审计,来建立并维护工作产品的完整性。1、简介“配置管理”过程域涉及以下活动:• 识别所选工作产品的配…...
网络编程套接字Socket
一.什么是网络编程网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)。二.为什么要实现网络编程我们通过网络编程可以在网络中获取资源,实质是通过网络,获…...
Linux进程概念(二)
进程状态1.阻塞和挂起2.R运行状态和S睡眠状态3.T停止状态4.X死亡状态和Z僵尸状态🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀🚀系列专栏:【Linux的学习】 📝📝本…...
墨天轮【第二届数据库掌门人论坛】圆满收官 | 含嘉宾精彩观点回顾
2月10日上午,墨天轮【2023春季发布会暨第二届数据库掌门人论坛】盛大开启,本次活动的主题为“新征程,向未来”,共包含2022年度中国数据库颁奖盛典、2022年度行业发展报告发布以及第二届数据库掌门人论坛三项议程。华为云数据库服务…...
Redis之集群搭建
redis的集群模式简介: redis的集群模式中可以实现多个节点同时提供写操作,redis集群模式采用无中心结构,每个节点都保存数据,节点之间互相连接从而知道整个集群状态。 集群搭建步骤如下 (一台服务器模拟多台服务器) 1.创建6个配置…...
31-Golang中的二维数组
二维数组的使用方式 使用方式一:先声明/定义再赋值 1.语法:var数组名 [大小] [大小]类型2.比如:var arr [2] [3]int,再赋值 package main import ("fmt" )func main() {//定义/声明数组var arr [4][6]int//赋初值arr[1][2] 1ar…...
<<Java开发环境配置>>6-SQLyog安装教程
一.SQLyog简介: SQLyog 是一个快速而简洁的图形化管理MySQL数据库的工具,它能够在任何地点有效地管理你的数据库,由业界著名的Webyog公司出品。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。 二.SQLyog下载: 下载地址…...
MySQL 中的 distinct 和 group by 哪个效率更高
先说大致的结论(完整结论在文末):在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。在语义相同,无索引的情况下:distinct效率高于group by。原因是distinct 和 …...
计算机相关专业毕业论文选题推荐
计算机科学以下是我推荐的20个计算机科学专业的本科论文选题:基于机器学习的推荐算法研究与实现基于区块链技术的数字身份认证方案设计与实现基于深度学习的图像识别技术研究与应用基于虚拟现实技术的教育培训平台设计与实现基于物联网技术的智能家居系统研究与开发…...
网络编程套接字之TCP
文章目录一、TCP流套接字编程ServerSocketSocketTCP长短连接二、TCP回显服务器客户端服务器客户端并发服务器UDP与TCP一、TCP流套接字编程 我们来一起学习一下TCP socket api的使用,这个api与我们之前学习的IO流操作紧密相关,如果对IO流还不太熟悉的&am…...
网络与串口调试工具TCPCOM
TCPCOM,网络与串口二合一调试助手,将网络调试助手与串口调试助手合二为一,绿色软件,简单高效。【软件特色】 1. 支持中英文双语言,自动根据操作系统环境选择系统语言类型; 2. 支持ASCII/Hex发送,发送和接收…...
数据库常用命令
文章目录1. 数据库操作命令1.进入数据库2.查看数据库列表信息3.查看数据库中的数据表信息2.SQL语句命令1. 创建数据表2. 基本查询语句3. SQL排序4. SQL分组统计5. 分页查询6. 多表查询7.自关联查询8.子查询1. 数据库操作命令 1.进入数据库 mysql -uroot -p2.查看数据库列表信…...
PTA复习
函数 6-1 学生类的构造与析构 #include<bits/stdc.h> using namespace std; class Student {int num;string name;char sex; public:Student(int n,string nam,char s):num(n),name(nam),sex(s){cout<<"Constructor called."<<endl;}void display…...
TypeScript 学习之接口
接口:对值所具有的结构进行类型检查,称为“鸭式变型法”或“结构性子类型化” 基本使用 interface LabelledValue {label: string; }function printLabel(labelledObj: LabelledValue) {console.log(labelledObj.label); }let myObj {size: 10, label:…...
原码反码补码
在计算机中,负数都是以补码的形式存放的, 正数的原码、反码、补码完全一致。 原码:指的是正数的二进制或负数的二进制, 负数的二进制(原码),其实就是在正数的二进制的最高位前面加一个符号位 1。…...
大数据选股智能推荐系统V1.0-1
很长时间没有发布博客了,这段时间个人确实有点忙。另外一方面在这段时间我也没有闲着。自己研发了一套大数据选股的智能推荐系统。废话不说,我们先来看这套系统:登录页面:(技术点:验证码的生成)…...
调研生成GIF表情包之路
调研阶段 gifshot.js合成GIF 可以从媒体流、视频或图像创建动画 GIF 的 JavaScript 库。 csdn地址:https://blog.csdn.net/qq_16494241/article/details/125717405 分解GIF图片、合成GIF图片 两步走: 1、分解GIF图片 libgif-js:JavaScrip…...
【RocketMQ】源码详解:生产者启动与消息发送流程
消息发送 生产者启动 入口 : org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl#start(boolean) 生产者在调用send()方法发送消息之前,需要调用start进行启动, 生产者启动过程中会启动一些服务和线程 启动过程中会启动MQClientInstance, 这个实例是针对一个项…...
信息安全(一)
思维导图 一、AES加解密 1.概述 1.1 概念 AES: 高级加密标准(Advanced Encryption Standard)是一种对称加密的区块加密标准。 (1)替代DES的新一代分组加密算法 (2)支持三种长度密钥&#x…...
企业多会场视频直播(主会场、分会场直播)实例效果
阿酷TONY 2023-2-16 长沙 活动直播做多会场切换功能(主会场、分会场、会场一、会场二、会场三自由切换) 企业多会场视频直播(主会场、分会场直播)实例效果 特点:支持PC端,也支持移动端观看,会…...
线性代数速览(一)行列式
文章目录行列式🌻 行列式的定义🌼 行列式的性质🌷 一些定理🥀 行列式的计算🌺 克莱姆法则行列式 行列式的本质,就是一个数值。 🌻 行列式的定义 有三种定义:1、按行展开ÿ…...
恭喜山东翰林“智慧园区管理系统”获易知微可视化设计大赛二等奖
数字化经济发展是全球经济发展的重中之重,“数字孪生(Digital Twin)”这一词汇正在成为学术界和产业界的一个热点。数字孪生作为近年来的新兴技术,其与国民经济各产业融合不断深化,推动着各大产业数字化、网络化、智能…...
gulp简单使用
gulp gulp的核心理念是task runner 可以定义自己的一系列任务 等待任务被执行 基于文件stream的构建流 我们可以使用gulp的插件体系来完成某些任务 webpack的核心理念是module bundler webpack是一个模块化的打包工具 可以使用各种各样的loader来加载不同的模块 可以使用各种…...
ce认证机构如何选择?
CE认证想必大家都已经有所了解,它是产品进入欧盟销售的通行证,那么我们在办理CE认证时该怎么进行选择?带大家了解一下CE认证机构,以及该怎么去进行选择? 以下信息由证果果编辑整理,更多认证机构信息请到证果果网站查看。找机构…...
全网招募P图高手!阿里巴巴持续训练鉴假AI
P过的证件如何鉴定为真?三千万网友都晒出了与梅西的合影?图像编辑技术的普及让人人都能P图,但也带来“假图”识别难题,甚至是欺诈问题。 为此,阿里安全联合华中科技大学国家防伪工程中心、国际文档分析识别方向的唯一顶…...
webrtc QOS笔记一 Neteq直方图算法浅读
webrtc QOS笔记一 Neteq直方图算法浅读 文章目录webrtc QOS笔记一 Neteq直方图算法浅读Histogram Algorithm获取目标延迟遗忘因子曲线Histogram Algorithm DelayManager::Update()->Histogram::Add() 会根据计算的iat_packet(inter arrival times, 实际包间间隔 / 打包时长…...
免费网站做seo/seo外贸网站制作
传送门 floyd求最小环的板子题目。 就是枚举两个相邻的点求最小环就行了。 代码: #include<bits/stdc.h> #define inf 0x3f3f3f3f3f3f #define ll long long using namespace std; inline ll read(){ll ans0;char chgetchar();while(!isdigit(ch))chgetcha…...
北京高端网站建设系统/陕西网络营销优化公司
2-范数 欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方 参考资料 1.知乎:0 范数、1 范数、2 范数有什么区别? 2. Wikipedia:范数...
wordpress怎么设置派送中/seo如何提高排名
在我们平时的工作中,偶尔需要装个系统什么的,一般会有通过网络PEX安装或者cobbler安装的,但是万一没网呢?那这时候就需要一个U盘来拯救你啦。首先我们说一下思路:(1)选择一个文件夹,…...
设计公司名字创意/上海优化seo
区块链技术被誉为第四次工业革命代表性成果之一,“最有潜力触发第五轮颠覆性革命浪潮的核心技术”,代表着互联网的未来,具有划时代意义。它被认为是与1975年的个人计算机、1993年的因特网同样具有革命性的信息技术突破。 日前,全…...
书店网站规划与建设/网站建设的步骤
又一次过了零点,不得不说晚上的时间过的实在太快,跟前几天通宵排队时的煎熬形成鲜明对比,为了保存实力,今天到此为止,带着问题明天再继续排查。 凌晨让叫车也变得容易,在走出办公室时就有人接单了ÿ…...
网站如何做点击链接地址/网络推广网站排行榜
我正在尝试从电子表格中读取日期列和时间列.我可以从工作表中退出日期列,但不能退出时间列.例如,我的工作表将包含以下形式的行:约会时间11/2/2012 12:15:01我有以下代码来获取日期列:while(cellIterator.hasNext()) {HSSFCell cell (HSSFCell)cellIter…...