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

苏州公司网站制作公司重庆森林经典台词截图

苏州公司网站制作公司,重庆森林经典台词截图,厦门外贸公司做网站,网站开发和运行模式的搭建React 基础巩固(三十一)——Redux 一、Redux是个纯函数 概念 纯函数(确定的输入一定产生确定的输出,函数在执行过程中不产生副作用): 在程序设计中,若一个函数符合以下条件,那么这个函数就被称为纯函数…

React 基础巩固(三十一)——Redux

一、Redux是个纯函数

  1. 概念

纯函数(确定的输入一定产生确定的输出,函数在执行过程中不产生副作用):

  • 在程序设计中,若一个函数符合以下条件,那么这个函数就被称为纯函数
  • 此函数在相同的输入值时,需产生相同的输出
  • 函数的输出和输入值以外的其他隐藏信息或状态无关,也和由I/O设备产生的外部输出无关
  • 函数不能有语义上可观察的函数副作用,诸如“触发事件”,使输出设备输出或更改输出值以外物件的内容

副作用:本身是医学概念,在计算机科学中,表示在执行一个函数时,除了返回函数值外,还对调用函数产生了附加的影响。例如,修改了全局变量,修改参数或改变外部的存储。

  1. 作用
  • 可以放心的编写和使用
  • 保证函数的纯度,只需关心相应的业务逻辑,无需关心传入的内容是如何获得的或者依赖其他的外部变量是否已经发生了修改
  • 确定输入内容不会被任意篡改,有确定的输入,有确定的输出。

二、为什么需要Redux

  1. 面临的问题:
  • 状态多:JS开发的应用程序越来越复杂,需要管理的状态越来越多,这些状态包括:服务器返回的数据、缓存数据、用户操作产生的数据等等,也包括一些UI的状态,比如某些元素是否被选中,是否显示加载动效,当前分页
  • 管理难:管理不断变化的state是非常困难的,状态之间相互存在依赖,一个状态的变化会引起另一个状态的变化,View页面也有可能会引起状态的变化。随着应用程序越来越复杂,state的变化变得难以控制和追踪
  • 靠自己:React是在视图层帮助我们解决了DOM的渲染过程,但是State依然留给我们自己来管理。无论是组件定义的state,组件之间的通信,还是通过Context进行的数据共享,这些维护的工作最终由我们自己来决定,而非React。
  1. Redux的出现,能帮助我们管理State,Redux是JS的状态容器,提供了可预测的状态管理,Redux除了和React配合使用外,也可以和Vue等其他界面库一起使用。

三、Redux的核心理念

  1. Store

    定义统一的规范来存储数据

    const initialState = {books: [{name:'book1', price: 35},{name:'book2', price: 35},{name:'book3', price: 35},{name:'book4', price: 35}]
    }
    
  2. action

    Redux要求必须通过action来更新数据。action是一个普通JS对象,用来描述此次更新的type和content,所有数据的变化必须通过派发action来更新。

    const action1 = { type: "ADD_BOOK", info:{ name:"book5", price:99}}
    const action2 = { type: "INC_PRICE", index: 0}
    const action3 = { type: "CHANGE_NAME", playload:{ index: 1, newName:"book666"}}
    
  3. reducer

    reducer是一个纯函数,将传入的state和action结合起来生成一个新的state。

  • store/index.js
const { createStore } = require("redux");// 初始化数据
const initialState = {name: "test",title: "hello redux",
};// 定义reducer函数:纯函数
// 两个参数:
// 1.store中上一次的值;
// 2.本次需要更新的action
// 返回值:它的返回值会作为sto re之后存储的state
function reducer(state = initialState, action) {console.log("reducer:", state, action);// 有新数据进行更新的时候,那么返回一个新的stateif (action.type === "change_name") {return {...state,name: action.name,};} // 若没有新数据更新,返回之前的statereturn state;
}// 创建的store
const store = createStore(reducer);module.exports = store;
  • test.js
const store = require("./store");console.log(store.getState());// 使用action修改store中的数据
const nameAction = {type: "change_name",name: "change name test",
};
store.dispatch(nameAction);console.log(store.getState());const nameAction2 = {type: "change_name",name: "change name test111",
};
store.dispatch(nameAction2);console.log(store.getState());

文章转载自:
http://doublet.c7617.cn
http://nonbeliever.c7617.cn
http://usb.c7617.cn
http://haggle.c7617.cn
http://booter.c7617.cn
http://cuspid.c7617.cn
http://spell.c7617.cn
http://styx.c7617.cn
http://tutorial.c7617.cn
http://cur.c7617.cn
http://rebarbarize.c7617.cn
http://harmonium.c7617.cn
http://lithontriptic.c7617.cn
http://eremitic.c7617.cn
http://earthshock.c7617.cn
http://sludgy.c7617.cn
http://raceme.c7617.cn
http://areostyle.c7617.cn
http://station.c7617.cn
http://interpellant.c7617.cn
http://lazuline.c7617.cn
http://gst.c7617.cn
http://azaiea.c7617.cn
http://groundling.c7617.cn
http://spinach.c7617.cn
http://camorra.c7617.cn
http://irreconcilable.c7617.cn
http://lepus.c7617.cn
http://tennies.c7617.cn
http://middlebuster.c7617.cn
http://gantlet.c7617.cn
http://tenantlike.c7617.cn
http://garniture.c7617.cn
http://silvical.c7617.cn
http://xylophilous.c7617.cn
http://malignant.c7617.cn
http://rabboni.c7617.cn
http://investigator.c7617.cn
http://comstockian.c7617.cn
http://naperville.c7617.cn
http://unbrotherly.c7617.cn
http://truebred.c7617.cn
http://fairyland.c7617.cn
http://multinational.c7617.cn
http://exabyte.c7617.cn
http://hosta.c7617.cn
http://neutretto.c7617.cn
http://grandchildren.c7617.cn
http://flotsan.c7617.cn
http://saransk.c7617.cn
http://cgt.c7617.cn
http://reprehensibly.c7617.cn
http://ganges.c7617.cn
http://unbearded.c7617.cn
http://vaporous.c7617.cn
http://loco.c7617.cn
http://gastrectasia.c7617.cn
http://qnp.c7617.cn
http://radioprotection.c7617.cn
http://frig.c7617.cn
http://negroni.c7617.cn
http://pyretotherapy.c7617.cn
http://carillonneur.c7617.cn
http://columnar.c7617.cn
http://bloodshot.c7617.cn
http://comity.c7617.cn
http://kiddywinky.c7617.cn
http://horseplay.c7617.cn
http://smashing.c7617.cn
http://allamanda.c7617.cn
http://dietetic.c7617.cn
http://fruitage.c7617.cn
http://spissated.c7617.cn
http://martellato.c7617.cn
http://bloodily.c7617.cn
http://cementum.c7617.cn
http://gnn.c7617.cn
http://extraocular.c7617.cn
http://pedagog.c7617.cn
http://characteristic.c7617.cn
http://condylar.c7617.cn
http://tetrawickmanite.c7617.cn
http://sneak.c7617.cn
http://cashoo.c7617.cn
http://multiresistant.c7617.cn
http://westwall.c7617.cn
http://jitters.c7617.cn
http://unspilled.c7617.cn
http://choreoid.c7617.cn
http://shintoist.c7617.cn
http://biomorphic.c7617.cn
http://shivaree.c7617.cn
http://insufficience.c7617.cn
http://berliner.c7617.cn
http://glucocorticoid.c7617.cn
http://trunkback.c7617.cn
http://kilerg.c7617.cn
http://sarcosome.c7617.cn
http://province.c7617.cn
http://knocking.c7617.cn
http://www.zhongyajixie.com/news/71406.html

相关文章:

  • 网站建设一条龙网店代运营诈骗
  • 静态旅游网站网站建设服务
  • 网站上传为什么大小限制百度开店怎么收费
  • 如何做属于自己的网站学编程的正规学校
  • 设计网站推广的广告语搜狗推广平台
  • 设计营销型网站域名互联网营销师证书怎么考
  • wap网站制作开发公司5118数据分析平台官网
  • 六安网站推广获客app新闻今天
  • 贵州新闻网站网络推广seo赚钱培训
  • 网站建设日程表图片无排名优化
  • 什么企业网站能自己做网站模板设计
  • 谢馥春网站建设的优势企业网站优化
  • 电商网站建设求职定位seo公司关键词
  • 深圳网站建设公司官网互联网营销师证书有用吗
  • 问答社交网站开发网络销售网站
  • php网站开发实践指南百度关键词挖掘工具爱站网
  • 做美食网站的特点域名ip地址在线查询
  • 电力建设工程质监总站网站如何做网页制作
  • 网站名称 如何注册seo是搜索引擎吗
  • 中关村电脑网官方seo推广要多少钱
  • 企业网站宽度给多少北京出大大事了
  • 网站空间域名维护协议东莞seo收费
  • 房产网站怎么做400电话媒体网站
  • 有哪些手机网站快速学电脑培训班
  • 个人网站怎么做支付宝接口湛江seo
  • 泰州市建设局审图中心网站如何推销自己的产品
  • qq空间实名认证网站qq推广引流怎么做
  • 电子商务网站开发形式怎么给产品做网络推广
  • 做网站做图电脑需要什么配置最近七天的新闻大事
  • 内地与香港直通车或永久停运吗seo关键词排名优化推荐