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

政务公开网站建设意义wordpress底端小工具

政务公开网站建设意义,wordpress底端小工具,网站UI怎么做,国内知名企业网站setState 是 react 中更新 UI 的唯一方法#xff0c;其内部实现原理如下#xff1a; 调用 setState 函数时#xff0c;React 将传入的参数对象加入到组件的更新队列中。React 会调度一次更新#xff08;reconciliation#xff09;#xff0c;在调度过程中#xff0c;Re…setState 是 react 中更新 UI 的唯一方法其内部实现原理如下 调用 setState 函数时React 将传入的参数对象加入到组件的更新队列中。React 会调度一次更新reconciliation在调度过程中React 会根据组件的 state 和 props 来计算出组件的新的状态并比较新旧的状态决定是否需要重新渲染组件。 this.setState([particalState], [callback])中 particalState 是一个对象支持部分修改 state,只更新当前要修改的属性其余的保持不变。callback 是可选的函数在 setState 更新完成之后执行。类似于 vue 中的 nextTick 机制。 发生在 componetDidUpdate 生命周期之后DOM 更新完成之后。componetDidUpdate 会在任何 state 更新之后调用不管是否是 setState 引起的。这里的回调函数只会在特定的 state 变化后出发还要主动调用。即使我们使用了 shouldComponentUpdate返回 false 来组织组件更新 componentDidUpdate 不更新了回调函数依然会执行。 import { Component } from react;class ClassComp extends Component {state {x: 10,y: 20,z: 0,};handleAdd () {// this是指向当前组件的实例箭头函数式没有自己的thisthis.setState({x: this.state.x 1,},() {console.log(this.state.x, xxxxxxxxxxxxx);});};shouldComponentUpdate() {return false;}componentDidUpdate() {console.log(componentDidUpdate class component);}render() {console.log(render class component);const { x, y, z } this.state;return (divClass Componentpx: {x}, y: {y} z:{z}br /button onClick{this.handleAdd}add/button/p/div);} } export default ClassComp;setState 的同步与异步 r18 中setState 在任何地方都是异步的,包括合成事件周期函数定时器。。。 r18 中有一套更新队列的机制,[updater]来处理的基于异步操作实现状态的批处理 好处 异步的目的是为了性能优化在多个 setState 调用时可以合并成一个 state 更新 异步的目的是为了防止 setState 调用过于频繁造成性能问题 在 r18 之前。我们只在 react 的合成事件和生命周期函数中调用 setState 做批量更新默认情况下不会对原生事件,promise,setTimeout,requestAnimationFrame 等异步操作做批量更新。 r16 中的执行效果 r18 中的执行效果 需求 点击一个按钮让数字 x 加一结果为 30 import { Component } from react; class ClassComp extends Component {state {x: 10,y: 20,z: 0,};handleAdd () {for (let i 0; i 20; i) {this.setState(x:this.state.x1);}console.log(this.state.x);};render() {console.log(render class component);const { x, y, z } this.state;return (divClass Componentpx: {x}, y: {y} z:{z}br /button onClick{this.handleAdd}add/button/p/div);} } export default ClassComp;可以发现打印结果为 1, 不是 30,改造代码引入 flushSync 写法 1 import { Component } from react; import { flushSync } from react-dom;handleAdd () {for (let i 0; i 20; i) {flushSync(() {this.setState(x:this.state.x1);}}console.log(this.state.x);};export default ClassComp;写法 2 import { Component } from react; import { flushSync } from react-dom;handleAdd () {for (let i 0; i 20; i) {this.setState(x:this.state.x1);flushSync()}console.log(this.state.x);};export default ClassComp;可以看到 render 执行了 20 次但是打印结果为 30,如果只让 render 执行一次打印结果为 30,需要改造代码 import { Component } from react; class ClassComp extends Component {state {x: 10,y: 20,z: 0,};handleAdd () {for (let i 0; i 20; i) {this.setState((prev) {return { x: prev.x 1 };});}console.log(this.state.x);};render() {console.log(render class component);const { x, y, z } this.state;return (divClass Componentpx: {x}, y: {y} z:{z}br /button onClick{this.handleAdd}add/button/p/div);} } export default ClassComp;
http://www.tj-hxxt.cn/news/228751.html

相关文章:

  • 怎么做移动端网站计算像素开源商城系统源码
  • 徐州企业网站建设谷歌怎么把两个网站做反链
  • 网站在百度无法验证码怎么办啊恶意推广网站
  • 东莞网站设计找谁删除西部数码网站管理助手
  • 票务网站做酒店推荐的目的宝和网站建设
  • vip视频解析网站怎么做肇庆高端品牌网站建设
  • 微信网站游戏ai智能ppt制作
  • 旅游网站的导航怎么做网站论坛建设需要什么资质
  • 重庆住房城乡建设厅网站首页wordpress手机编辑器
  • 淄博网站建设优化公司东莞樟木头网站建设
  • 网站开发公司会计vi设计模板源文件
  • wordpress字体哪个好看百度手机seo软件
  • 云南百度建站小说推文万能关键词
  • 网站icp备案有效时间重庆市住房和城乡建设厅网站
  • wordpress 在线咨询网站标签优化怎么做
  • 免注册制作网站家装公司排行榜
  • 福田做棋牌网站建设哪家公司便宜建网站多少钱
  • 做网站容易还是做小程序容易网页传奇游戏排行榜比亚迪
  • 公司网站域名做邮箱网站建设公司-山而
  • 山东平台网站建设平台关于建设公司网站的议题
  • 月付购物网站建站个人做排行网站
  • 深圳营销型网站制作我爱水煮鱼 wordpress
  • 库尔勒网站商城建设网站改版效果图怎么做
  • 做网站购买模板常州模板网站建设价位
  • 营销型网站开发推荐广州和广州市注册公司区别
  • 外贸网站建设步骤宁乡电商网站建设价格
  • 哪个专业是学网站开发的开发公司绩效指标
  • 旅游交友的网站建设深度网
  • 衡水专业网站建设公司企业安全文化建设的内容
  • python 网站开发书籍微信红包开发平台