Readux基础

什么是redux?

简单点回答就是,一个管理数据的全局对象,但是它有单一状态树的概念,所谓的单一状态树,就是指“所有的 state都以一个对象树的形式储存在一个单一的 store 中。”

页面中的所有状态或者数据,都应该用这种状态树的形式来描述;页面上的任何变化,都应该先去改变这个状态树,然后再通过某种方式实现到页面上。

或者换句话说,我们要做的核心工作,就是用单个对象去描述页面的状态,然后通过改变这个对象来操控页面。

使用场景

无论是移动端还是 pc 端,当你使用 React 或者 vue 开发组件化的 SPA 程序时组件之间共享数据(状态)共享本身就是一个问题,既然是共享的那么就没有必要在每个组件中都重新获取,因此每个系统都需要一个管理多组件使用的公共信息的功能,这就是 Redux 的作用。

核心概念

Action:是把数据从应用传到 store 的有效载荷,通俗一点就是描述一个动作
比如:
你的女朋友给你发了个消息,消息的内容就是,"快去给我清空购物车", 那么这个内容在redux中就是action的意思

Reducer:Action 只是描述了有事情发生了这一事实,并没有指明应用如何更新 state。而这正是 reducer 要做的事情。 一般称其为规则
比如:
你女朋友已经给你发完消息了,但是只是一个消息,你是执行者,你是怎么执行的他不关心,那么你执行的这个过程就是reducer,为什么叫规则那,因为你执行的这个过程本就是规则,你先得有钱,然后登录他的帐号,然后结算

Store:Store 就是把 Reducer 和 action 联系到一起的对象。
Store 有以下职责:
维持应用的 state;
提供 getState() 方法获取 state;
提供 dispatch(action) 方法更新 state;
通过 subscribe(listener) 注册监听器;

安装

如果单纯使用 Redux 仅仅安装 Redux 即可,执行npm install redux --save,不过在 React 中使用 Redux 肯定会用到 react-redux 这一工具,因此这里一起安装完,执行npm install react-redux --save。

案例代码

// 定义计算规则,即 reducer
function BoyFriend(state = {cart: '10个商品价值100000000',relationship: '恋人'
}, action) {switch (action.type) {case 'JIEZHANG':state.cart = "结算完成,当前购物车为空"return statecase 'FENSHOU':state.relationship = '单身狗'return statedefault:return state}
}// 根据计算规则生成 store
let store = createStore(BoyFriend)// 定义数据(即 state)变化之后的派发规则
store.subscribe(() => {console.log('current state', store.getState())
})// 触发数据变化
store.dispatch({ type: 'JIEZHANG' })
store.dispatch({ type: 'JIEZHANG' })
store.dispatch({ type: 'FENSHOU' })

上一篇:react开发教程(八)React组件通信
下一篇:react开发教程(十)redux结合react

react开发教程(九)redux基础相关推荐

  1. react开发教程(十)redux结合react

    描述 Redux 和 React 之间没有关系.Redux 可以搭配 React.Angular 甚至纯 JS.但是 Redux 还是比较适合和 React 搭配的,因为 React 允许你以 sta ...

  2. 【九层之台】Web开发教程:1. 基础

    目录 1. 基础 网页的制作方法 简单的网页加载过程 引用路径 1. 基础 在这一章里,我们将对网页应用的开发和原理有一个大体上的了解. 本章可能是最无聊的章节,因为本章不包含实践内容,而且概念略微复 ...

  3. 比较全面的typescript + react 开发教程

    前言 本教程不用react-script这种工具,用的webpack + eslint(可选) + prettier(可选) + babel,使用编辑器用的vscode. 以下会涉及到ts语法和red ...

  4. 【React.js 06】Redux基础知识

    Redux是一个专注于状态管理的库,和React是解耦的,用Angular和Vue都可以使用Redux.其具有一个单一状态,单向数据流的特性. Redux概念 redux有一个store,记录所有的s ...

  5. 【2023Unity游戏开发教程】零基础带你从小白到超神01——Unity简介下载和安装配置(视频资源订阅扣1私发)

    文章目录 简介 优缺点 下载 安装 配置 简介 Unity引擎由Unity科技研发,最早于2004年发布.虽然在3A游戏应用上Unity暂时处于下风,但是在知名游戏上的数量也不遑多让,例如当前火爆的& ...

  6. [译]MediaSession MediaController – Android TV 应用开发教程九

    版权声明:本文为博主原创翻译文章,转载请注明出处. 推荐: 欢迎关注我创建的Android TV 简书专题,会定期给大家分享一些AndroidTv相关的内容: www.jianshu.com/c/37 ...

  7. 【Unity游戏开发教程】零基础带你从小白到超神16——四种方法控制人物移动之角色控制器

    角色控制器 控制人物移动的四种方式 直接修改组件位置 去资源商城下载角色控制系统成品 unity提供的角色控制器组件 Character Controller API 通过物理系统自己做 拓展 常用的 ...

  8. linux开发教程,Java基础面试题(2)

    [白嫖资料](https://gitee.com/vip204888/java-p7) **文件字节流** // 1 创建FileInputStream 并指定文件路径 FileInputStream ...

  9. 【Unity游戏开发教程】零基础带你从小白到超神15——声音、音效和视频播放

    文章目录 视频播放(Video Player组件) 第一种,添加Video Player组件播放 第二种,添加原始图像播放 代码控制视频播放(方法跟音频类似) 听声音的组件,Audio Listene ...

最新文章

  1. 谷歌自动驾驶是个大坑,还好中国在构建自己的智能驾驶大系统
  2. TNS-12560: TNS: 协议适配器错误 Oracle11g 创建数据库中问题处理(必须运行Netca以配置监听程序)
  3. Python + wordcloud + jieba 十分钟学会生成中文词云
  4. Hyperledger Fabric 1.0 实战开发系列 第⑤课 fabric 证书解析
  5. Linux 没有主清单属性,maven编译正常,运行报错:中没有主清单属性
  6. tensorflow版本及其对应环境
  7. ubuntu16.04没有办法使用CRT,或者SSH工具的解决办法
  8. hadoop的基本搭建
  9. 跨平台的移动Web应用开发平台 PhoneGap 1.6 发布
  10. java httpclient读取html文件,httpclient+nekohtml 解析HTML
  11. Redis安装到Windows系统上的详细步骤
  12. 外卖订单量预测异常报警模型实践
  13. 2021双十一自动浏览脚本,京东淘宝自动化脚本末班车
  14. 将ipad作为Windows10系统的的扩展显示屏
  15. python 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  16. 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入...
  17. 微信服务号解决开启服务配置后自定义菜单失效的方法
  18. 强烈安利:小顽简报,一款高效实用的PPT新插件
  19. html可以联机玩的小游戏,十款可以和基友一起玩的游戏 联机才能体验到乐趣
  20. Swift: iOS底层基础知识-文件目录结构

热门文章

  1. vue 3.0记录Element UI 表单使用(看了隔壁小孩儿都会用的Element UI 表单组件使用)
  2. update语句修改报错问题处理
  3. c语言string函数的用法_C语言基础| 指针和函数
  4. cli php 增强包_Linux 上安装 PHP 扩展
  5. 小学生通用计算机在线使用,Win7电脑可以使用一起小学软件的方法
  6. web服务器php配置实例,配置 Web 服务器提供 PHP 服务
  7. c#加mysql简单系统_visual studio2019连接MYSQL数据库详细教程(C#代码)
  8. 云主机安mysql_如何在云服务器 ECS 安装 MySQL
  9. 把C#对象转换为json字符串
  10. 史上最全Java集合关系图