Redux 安装及使用

简介: Store 收到 Action 以后,必须给出一个新的 State,这样 View 才会发生变化。这种 State 的计算过程就叫做 Reducer。

一、安装


yarn add redux
或者
npm install --save-dev redux


二、创建相应目录


在src文件夹下创建store文件夹,在src文件夹下创建相应文件


61ac7476ebf544f6a5a2b5c90ec66d1c_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


1.创建store的入口文件idex.js


Store对象包含所有数据。如果想得到某个时点的数据,就要对 Store 生成快照。这种时点的数据集合,就叫做 State。

当前时刻的 State,可以通过store.getState()拿到。


import { createStore } from 'redux';
import reducer from './reducers/index'
const store = createStore(
  reducer,
  window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() --开发者redux -devTools配置
);
export default store;


Redux 规定, 一个 State 对应一个 View。只要 State 相同,View 就相同。你知道 State,就知道 View 是什么样,反之亦然


要看到状态值的变化,--要到谷歌插件市场下载redux --devloos插件


2.Action


State 的变化,会导致 View 的变化。但是,用户接触不到 State,只能接触到 View。所以,State 的变化必须是 View 导致的。Action 就是 View 发出的通知,表示 State 应该要发生变化了。


Action 是一个对象。其中的type属性是必须的,表示 Action 的名称。其他属性可以自由设置


创建一个actionTypes.js的属性文件的js供使用


例如:


export const CHANGINPUT = 'CHANGINPUT'
export const ADDBBIMN = 'Add_bbimn'
export const DELEMTITEM = 'DelemtItem'
export const UPDATEINFO = 'UPdateinfo'


3.Action Creator


View 要发送多少种消息,就会有多少种 Action。如果都手写,会很麻烦。可以引入刚才创建的 Action, 在 /src/store/action/ 目录下创建actionCreators.js


import { CHANGINPUT, ADDBBIMN, DELEMTITEM, UPDATEINFO } from "./actionTypes";
export const changInput = (value) => ({
    type: CHANGINPUT,
    value: value
})
export const addbindCheng = () => ({
    type: ADDBBIMN,
})
export const deleteItemCheng = (index) => ({
    type: DELEMTITEM,
    value:index
})
export const updateinfo = (value) => ({
  type: UPDATEINFO,
  value: value,
});


4.Reducer更新数据状态


Store 收到 Action 以后,必须给出一个新的 State,这样 View 才会发生变化。这种 State 的计算过程就叫做 Reducer。


Reducer 是一个函数,它接受 Action 和当前 State 作为参数,返回一个新的 State。


/src/store/reducers创建index.js文件


import { CHANGINPUT, ADDBBIMN, DELEMTITEM ,UPDATEINFO } from "../actions/actionTypes";--引入action属性文件
const defaultState = {
  userInfo: {
    username: "李四",
    age: 28,
    sex: "男",
  },
};
export default (state = defaultState, action) => {
  if (action.type === CHANGINPUT) {
    // Reducer 里只能接受 state 不能改变state
    let newStade = JSON.parse(JSON.stringify(state));
    newStade.inputValue = action.value;
    return newStade;
  }
  if (action.type === ADDBBIMN) {
    let newStade = JSON.parse(JSON.stringify(state));
    newStade.list.push(newStade.inputValue);
    return newStade;
  }
  if (action.type === DELEMTITEM) {
    let newStade = JSON.parse(JSON.stringify(state));
    newStade.list.splice(action.value, 1);
    return newStade;
  }
  if (action.type === UPDATEINFO){
      let newStade = JSON.parse(JSON.stringify(state));
      newStade.userInfo.username = action.value;
      return newStade;
  }
  return state;
};


5.如何使用


在页面中引入相应的文件


import store from "../../../store";
import { updateinfo } from "../../../store/actions/actionCreators";  --我这里只用到了更新用户信息的


如我在用户列表里更新用户信息


a46a38eba903482e8fd779fea929d4c2_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

相关文章
|
自然语言处理 物联网
化学领域的新篇章:大型语言模型的创新应用
【4月更文挑战第20天】LlaSMol项目成功应用大型语言模型(LLMs)于化学研究,创建SMolInstruct数据集,包含14个化学任务和300万个样本。经过微调,LlaSMol模型在多任务上超越GPT-4,展示LLMs在化学领域的潜力。然而,数据准确性和模型泛化性仍是挑战,未来需进一步研究。[论文链接](https://arxiv.org/pdf/2402.09391.pdf)
297 1
|
Linux Go iOS开发
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
2182 0
|
Java 项目管理 Maven
这你必须知道,如何上传自己的jar包到maven公共远程中央仓库
这你必须知道,如何上传自己的jar包到maven公共远程中央仓库
1387 0
|
9月前
|
域名解析 弹性计算 安全
阿里云服务器安装宝塔面板、安装网站(新手图文教程)
本文详细介绍了从注册阿里云账号到使用宝塔面板安装网站的完整流程,包括阿里云账号的企业认证、服务器购买与安全规则配置、宝塔面板的安装及网站部署等步骤。通过图文并茂的方式,帮助用户轻松完成阿里云服务器的搭建和管理。适合新手快速上手,实现网站从零到有的全过程。如果觉得有用,别忘了点赞收藏!
7618 3
阿里云服务器安装宝塔面板、安装网站(新手图文教程)
|
9月前
|
存储 弹性计算 容灾
阿里云服务器ECS详细购买流程【新手购买手册】
本文详细介绍了阿里云服务器ECS的购买全流程,包括付费类型、地域选择、网络及可用区配置、实例规格、镜像系统、存储设置(系统盘与数据盘)、快照服务、公网IP与带宽配置、安全组规则设定以及登录凭据设置等关键步骤。以自定义购买为例,帮助用户根据实际需求选择合适的配置,如长时间使用建议包年包月模式,地域选择遵循就近原则降低延迟,实例规格依据性能需求挑选,同时提供带宽计费模式对比和安全组基础配置指导。通过清晰的图文说明,让用户轻松完成阿里云服务器的选购与部署。
1366 6
|
12月前
|
弹性计算 Linux 数据安全/隐私保护
阿里云服务器最新购买流程与试用流程参考,购买与试用图文教程和注意事项
如何购买和试用阿里云服务器,教程参考来了。阿里云服务器分为免费版和收费版,新用户可免费领取一台云服务器作为试用,轻量应用服务器2核2G目前38元1年,云服务器ECS2核2G3M的价格为99元1年,2核4G5M配置199元1年,下面小编来介绍一下2025年我们购买和试用阿里云服务器的详细流程,以图文形式展示给大家,适合新手用户参考。
阿里云服务器最新购买流程与试用流程参考,购买与试用图文教程和注意事项
|
12月前
|
机器学习/深度学习 XML 数据采集
AirMSPI verison 6椭球面投射的地球注册辐射度产品:AirMSPI 1B2 级产品包含云、气溶胶和地球表面的辐射和偏振图像
AirMSPI版本6椭球面投射的地球注册辐射度产品,是NASA在2017年10月至11月ACEPOL飞行活动中获取的数据。该产品包含云、气溶胶和地表的辐射及偏振图像,涵盖8个波长(355、380、445、470、555、660、865和935纳米),并提供辐照度、时间、角度等信息,支持气候变化、大气污染等研究。数据以HDF-EOS-5格式分发,由NASA/LARC/SD/ASDC发布。
137 2
|
存储 Ubuntu 数据安全/隐私保护
|
关系型数据库 MySQL Java
MySQL数据锁:Record Lock,Gap Lock 和 Next-Key Lock
本文基于 MySQL 8.0.30 版本及 InnoDB 引擎,深入解析三种行锁机制:记录锁(Record Lock)、间隙锁(Gap Lock)和临键锁(Next-key Lock)。记录锁锁定索引记录,确保事务唯一修改;间隙锁锁定索引间的间隙,防止新记录插入;临键锁结合两者,锁定范围并记录自身,有效避免幻读现象。通过具体示例展示了不同锁的作用机制及其在并发控制中的应用。
1283 2
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。