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

网站安全建设模板下载杭州模板网站

网站安全建设模板下载,杭州模板网站,网络服务与协议课件,宽屏网站做多少合适Immutable.js原理分析 Immutable Data 就是一旦创建#xff0c;就不能再被更改的数据。对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象。Immutable 实现的原理是 Persistent Data Structure#xff08;持久化数据结构#xff09;#xff0c;也…Immutable.js原理分析 Immutable Data 就是一旦创建就不能再被更改的数据。对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象。Immutable 实现的原理是 Persistent Data Structure持久化数据结构也就是使用旧数据创建新数据时要保证旧数据同时可用且不变。同时为了避免 deepCopy 把所有节点都复制一遍带来的性能损耗Immutable 使用了 Structural Sharing结构共享即如果对象树中一个节点发生变化只修改这个节点和受它影响的父节点其它节点则进行共享。 Immutable.js的使用 安装 cnpm i immutable --saveMap的操作 import React from react; import ReactDOM from react-dom; import {Map} from immutable;//声明一个对象这个对象要设置为不可被修改的对象 const state {value: hello,list: [html,css,js] }//将要设置不可更改的对象传入到Map()方法中会返回一个新的state对象 const imState Map(state)//将state对象设置为不可被修改的对象后使用 get(key) 方法取值 console.log(imState.get(value))//使用set()方法修改值修改后会返回一个新的对象原来的对象数据没有变化 const newImState imState.set(value,world)console.log(imState.get(value)) console.log(newImState.get(value))ReactDOM.render(divhello/div,document.getElementById(root));List的操作 import React from react; import ReactDOM from react-dom; import {List} from immutable;//声明一个数据要将该数组设置为不可更改的数组 const arry [1,2,3]//将数组传入 List() 中即可设置不可更改的数组对象 const imList List(arry)//对imList做追加操作不会对原数组做修改会返回一个新的数组对象 const newImList imList.push(4)console.log(imList.size,newImList.size)ReactDOM.render(divhello/div,document.getElementById(root));fromJS的操作 import React from react; import ReactDOM from react-dom; import {fromJS} from immutable;//声明一个不可更改的对象 const state {value: hello,list: [html,css,js],obj: {x: 1,y: {z: 2}} }//把state传入的fromJS()中 const imState fromJS(state)//获取imState中的值 console.log(imState.get(value))//修改imState中的值修改对象中的第一层属性的值可以使用 set() 方法 const newState imState.set(value,world) console.log(newState.get(value))//修改imState中更深层次的数据需要使用 setIn() 或 updateIn() 方法 //setIn() 可以直接赋值参数1为对象属性的层级结构按照层级顺序编写到数组中参数2为要赋的值 const newState1 imState.setIn([obj,y,z],100) //updateIn() 可以对原始值做修改后再返回新的值参数1同上参数2为修改值时用的回调函数回调函数的参数为对象原始值 const newState2 imState.updateIn([obj,y,z], val val 1)//获取深层对象结构的值使用 getIn() 方法 console.log(newState1.getIn([obj,y,z])) console.log(newState2.getIn([obj,y,z]))ReactDOM.render(divhello/div,document.getElementById(root));在redux中使用immutable 使用Map操作 第1步创建store import {createStore} from redux import reducer from ./reducerconst store createStore(reducer)export default store第2步创建reducer import {Map} from immutable//使用Map()来创建原始对象创建的原始对象为不可更改的对象 const defaultState Map({value: })const reducer (state defaultState, action){//在执行修改state的代码中使用 set() 方法完成修改操作返回一个新的对象if(action.type change_value){return state.set(value,action.value)}return state }export default reducer第3步创建App.js文件用于修改redux中的数据 import React, { Component } from react import store from ./store import Son from ./Sonexport default class App extends Component {constructor() {super()this.state store.getState()store.subscribe((){this.setState(store.getState())})}//文本框输入事件handleInput(e){let action {type: change_value,value: e.target.value}store.dispatch(action)}render() {return (divinput value{this.state.value} onChange{this.handleInput.bind(this)}/inputSon/Son/div)} } 第4步创建Son.js用于实时显示redux中的数据 import React, { Component } from react import store from ./storeexport default class Son extends Component {constructor(){super()//此时使用store.getState()获取的数据为immutable处理后的对象要使用get()方法获取具体值this.state {value: store.getState().get(value)}store.subscribe((){this.setState({value: store.getState().get(value)})})}render() {return (divSon组件{this.state.value}/div)} }使用fromJS操作 App.js代码 import React, { Component } from react import store from ./store import Son from ./Sonexport default class App extends Component {constructor() {super()this.state {value: ,name: ,age: 0,h1: }}//提交事件handleSubmit(){let action {type: reg_user,value: this.state.value,name: this.state.name,age: this.state.age,h1: this.state.h1}store.dispatch(action)}render() {return (divdiv普通值input value{this.state.value} onChange{(e){this.setState({value: e.target.value})}}/input/divdiv姓名input value{this.state.name} onChange{(e){this.setState({name: e.target.value})}}/input/divdiv年龄input value{this.state.age} onChange{(e){this.setState({age: e.target.value})}}/input/divdiv爱好input value{this.state.h1} onChange{(e){this.setState({h1: e.target.value})}}/input/divbutton onClick{this.handleSubmit.bind(this)}提交/buttonhr /Son/Son/div)} }store.js代码 import {createStore} from redux import reducer from ./reducerconst store createStore(reducer)export default storereducer.js代码 import {fromJS} from immutable//使用Map()来创建原始对象创建的原始对象为不可更改的对象 const defaultState fromJS({value: ,user: {name: ,age: 0,hobby: {h1: }} })const reducer (state defaultState, action){//使用fromJS中的 setIn() 方法修改数据if(action.type reg_user){return state.setIn([user,name],action.name).setIn([user,age],action.age).setIn([user,hobby,h1],action.h1).set(value,action.value)}return state }export default reducerSon.js代码 import React, { Component } from react import store from ./storeexport default class Son extends Component {constructor(){super()//此时store.getState()获取到数据为复杂类型要使用getIn()方法const storeState store.getState();this.state {value: storeState.get(value),user: {name: storeState.getIn([user,name]),age: storeState.getIn([user,age]),hobby: {h1: storeState.getIn([user,hobby,h1])}}}//监听store中的数据更新store.subscribe((){const storeState2 store.getState();this.setState({value: storeState2.get(value),user: {name: storeState2.getIn([user,name]),age: storeState2.getIn([user,age]),hobby: {h1: storeState2.getIn([user,hobby,h1])}}})})}render() {let {value,user} this.statereturn (divSon组件{value}p姓名{user.name}/pp年龄{user.age}/pp爱好{user.hobby.h1}/p/div)} }
http://www.zqtcl.cn/news/69499/

相关文章:

  • 浙江常规网站建设校园网站开发方案
  • 领英定制通网站建设登封seo公司
  • 网站建设暨检务公开自查报告化妆品应如何网站建设定位
  • 宜春建设网站公司搜索引擎优化包括哪些方面
  • 溧阳网站建设哪家好国外超酷网站
  • 珠宝网站dedecms模版网站应该怎么做
  • 南通网站公司网站建游戏网站
  • 企业网站备案需要什么资料浅谈高校门户网站建设的规范标准
  • 在网站上做承诺php网站开发环境的设置
  • 自己做的网站如何联网wordpress 不用登录
  • 网站做扫一扫做电影网站能不能赚钱
  • 如何查询网站域名备案信息购物网站设计图
  • htm5网站建设惠州企业网站建设
  • 公司网站的搭建方案建立个人博客网站wordpress
  • 建设网站 后期的提成方案广告公司现状
  • 南昌网站开发多少钱室内装饰设计师证书含金量
  • 注册公司制作网站久久建筑网平台
  • 做网站必须要购买空间吗wordpress视频模块
  • 工程网站模板百度关键词搜索排行榜
  • 泰安哪家做网站好百度的合作网站有哪些
  • flask做的网站如何上传文件网站建设的主要职责
  • access数据库网站随州市住房和城乡建设部网站
  • 网站案例库wordpress 聊天室
  • 赤峰网站建设公司项目网络中可以表示一个活动
  • 网站开发涉及到哪些知识产权微信小程序是免费的吗
  • 便宜的vps租用网站广州网页制作公司
  • 湘潭网站建设方案表格项目网络图
  • wdcp怎么上传做好的网站自己做的网站怎么添加文档
  • 企业网站模板图片网站备案 固定电话
  • 阿里自助建站平台搭配网站开发的开题报告