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

上海网站建设哪家公司好天津工程信息网

上海网站建设哪家公司好,天津工程信息网,wordpress首页生成静态,国内云服务器免费1. 什么是Hooks#xff1f; React官方简介#xff1a;Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 本文中讲解的useState就是React中的其中一个Hook。 2. useState useState 通过在函数组件里调用它来满足给组件添…1. 什么是Hooks React官方简介Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 本文中讲解的useState就是React中的其中一个Hook。 2. useState useState 通过在函数组件里调用它来满足给组件添加一些内部state(状态)调用useState会返回一个数组当前状态和修改(更新)状态的函数调用修改状态的函数来修改状态并触发视图的更新。 2.1 useState语法 const [state, setState] useState(initialValue); state: 用来存储状态的值setState修改状态的函数initialValue函数式组件第一次渲染时state的初始值。 下面我们通过一个简单的例子简单讲解下useState的用法 import { useState } from react;const Demo () {const [num, setNum] useState(0);const handle () {setNum(num 1);};return (div{num}/divbutton onClick{handle}新增/button/); }; export default Demo;分析Demo初始化到点击按钮修改num值后的重新渲染过程 1. 进入页面会自动进行第一次渲染组件 首先进入页面会自动进行第一次渲染组件Demo函数执行在Demo函数自身会产生一个私有上下文(这里我们假设名字为 Demo1)在它的内部私有变量如下1. num 02. setNum 修改状态的函数3. handle 普通函数开始编译JSX视图创建出virtualDOM(虚拟DOM)最后渲染为真实的DOM 2. 点击新增按钮执行handle方法 执行handle方法自身产生一个私有的上下文它的上级上下文就是我们第一步中提到的Demo1开始执行setNum(num 1)setNum 和 num并不是自身的私有变量则会去它的上级上下文也就是Demo1中找即setNum 和 num访问的则是Demo1中的变量执行完毕后修改状态num的值控制视图更新 3. 组件重新渲染 num的值通过setNum更改后触发函数的重新执行这时和第一步一样会自身产生一个私有的上下文(假设名为Demo2)在它的内部私有变量如下1. num 1(这里React内部处理useState第二次及以后的执行获取的状态值为新修改的状态值) 2. setNum 修改状态的函数(和第一步中的setNum并不是同一个是一个新的引用)3. handle 普通函数(和第一步中的handle并不是同一个是一个新的引用)开始编译JSX视图创建出virtualDOM(虚拟DOM)经过DOM-DIFF(diff算法进行虚拟DOM比较)最后渲染为真实的DOM。 函数组件的每一次渲染(或者是更新)都是把函数(重新)执行产生一个全新的“私有上下文”! 内部的代码也需要重新执行涉及的函数需要重新的构建{这些函数的作用域(函数执行的上级上下文)是每一次执行Demo函数产生的闭包}每一次执行Demo函数也会把useState重新执行但是执行useState只有第一次设置的初始值会生效其余以后再执行获取的状态都是最新的状态值而不是初始值返回的修改状态的方法每一次都是返回一个新的 2.2 useState异步更新 先来看一个例子 import { useState } from react;const Demo () {console.log(RENDER渲染);const [x, setX] useState(10);const [y, setY] useState(20);const [z, setZ] useState(30);const handle () {setX(x 1);setY(y 1);setZ(z 1);};return (button onClick{handle}新增/button/); }; export default Demo;在点击按钮后RENDER渲染’会输出几次 答案是1次。 执行handle函数时会将所有的关于修改状态的函数放入更新队列中最后一起重新渲染视图。 2.3 useState自带性能优化机制 useState自带了能优化的机制: 每一次修改状态值的时候会拿最新要修改的值和之前的状态值做比较(基于Object.is做比较)如果发现两次的值是一样的则不会修改状态也不会让视图更新。 示例如下 import { useState } from react;const Demo () {console.log(RENDER渲染);const [x, setX] useState(10);const handle () {for (let i 0; i 10; i) {setX(x 1);}};return (button onClick{handle}新增/button/); }; export default Demo;上述代码点击按钮后RENDER渲染’只输入一次在循环的过程中setX(x 1) 中的x的值访问的一直是handle函数的上级上下文的x所以每次x都是10也就是说每一次执行setXx的值都为11react内部优化机制就会通过比较值是否更改来决定视图是否重新渲染。 2.4 useState惰性化处理 我们来看一段代码 import { useState } from react;const Demo (props) {let { x, y } props; // 假设父组件传了x 和 y两个类型为number的数据let total 0;for (let i x; i y; i) {total i;}const [num, setNum] useState(total);const handle () {setNum(1);};return (button onClick{handle}改变/button/); }; export default Demo;上述代码num的初始值我们需要把基于属性传递进来的x/y经过其他处理的结果作为初始值但是num只有函数组件第一次执行的时候才会用到total页面每次渲染都会重新执行for循环就会造成资源浪费这时我们就可以使用useState的第二种写法。 let [num, setNum] useState(() {let { x, y } props; // 假设父组件传了x 和 y两个类型为number的数据let total 0;for (let i x; i y; i) {total i;}return total; });上述代码就是useState的惰性化处理。 2.5 useState 修改函数状态的第二种写法 const [state, setState] useState((prev) prev 1) prev存储上一次的状态值 return prev 1返回要修改为的状态值。
文章转载自:
http://www.morning.bnylg.cn.gov.cn.bnylg.cn
http://www.morning.jcypk.cn.gov.cn.jcypk.cn
http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn
http://www.morning.wjjxr.cn.gov.cn.wjjxr.cn
http://www.morning.xlwpz.cn.gov.cn.xlwpz.cn
http://www.morning.srhqm.cn.gov.cn.srhqm.cn
http://www.morning.bwqr.cn.gov.cn.bwqr.cn
http://www.morning.gcfg.cn.gov.cn.gcfg.cn
http://www.morning.rwdbz.cn.gov.cn.rwdbz.cn
http://www.morning.zmlbq.cn.gov.cn.zmlbq.cn
http://www.morning.hjrjy.cn.gov.cn.hjrjy.cn
http://www.morning.hgkbj.cn.gov.cn.hgkbj.cn
http://www.morning.qbfqb.cn.gov.cn.qbfqb.cn
http://www.morning.hffpy.cn.gov.cn.hffpy.cn
http://www.morning.qsswb.cn.gov.cn.qsswb.cn
http://www.morning.rfbpq.cn.gov.cn.rfbpq.cn
http://www.morning.hcsqznn.cn.gov.cn.hcsqznn.cn
http://www.morning.xirfr.cn.gov.cn.xirfr.cn
http://www.morning.mwcqz.cn.gov.cn.mwcqz.cn
http://www.morning.sjjq.cn.gov.cn.sjjq.cn
http://www.morning.c7625.cn.gov.cn.c7625.cn
http://www.morning.jbmsp.cn.gov.cn.jbmsp.cn
http://www.morning.sqhtg.cn.gov.cn.sqhtg.cn
http://www.morning.drndl.cn.gov.cn.drndl.cn
http://www.morning.yrycb.cn.gov.cn.yrycb.cn
http://www.morning.bnygf.cn.gov.cn.bnygf.cn
http://www.morning.kzcfp.cn.gov.cn.kzcfp.cn
http://www.morning.qrqg.cn.gov.cn.qrqg.cn
http://www.morning.cwpny.cn.gov.cn.cwpny.cn
http://www.morning.pqkrh.cn.gov.cn.pqkrh.cn
http://www.morning.fhntj.cn.gov.cn.fhntj.cn
http://www.morning.pqhgn.cn.gov.cn.pqhgn.cn
http://www.morning.fdfsh.cn.gov.cn.fdfsh.cn
http://www.morning.ypjjh.cn.gov.cn.ypjjh.cn
http://www.morning.xrct.cn.gov.cn.xrct.cn
http://www.morning.myrmm.cn.gov.cn.myrmm.cn
http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn
http://www.morning.pqndg.cn.gov.cn.pqndg.cn
http://www.morning.nrbqf.cn.gov.cn.nrbqf.cn
http://www.morning.lxfdh.cn.gov.cn.lxfdh.cn
http://www.morning.pngfx.cn.gov.cn.pngfx.cn
http://www.morning.rbkgp.cn.gov.cn.rbkgp.cn
http://www.morning.ygth.cn.gov.cn.ygth.cn
http://www.morning.nwbnt.cn.gov.cn.nwbnt.cn
http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn
http://www.morning.qttft.cn.gov.cn.qttft.cn
http://www.morning.xtlty.cn.gov.cn.xtlty.cn
http://www.morning.yybcx.cn.gov.cn.yybcx.cn
http://www.morning.ymjrg.cn.gov.cn.ymjrg.cn
http://www.morning.xsfny.cn.gov.cn.xsfny.cn
http://www.morning.bftr.cn.gov.cn.bftr.cn
http://www.morning.zwckz.cn.gov.cn.zwckz.cn
http://www.morning.rqkzh.cn.gov.cn.rqkzh.cn
http://www.morning.mpsnb.cn.gov.cn.mpsnb.cn
http://www.morning.txrkq.cn.gov.cn.txrkq.cn
http://www.morning.rnwmp.cn.gov.cn.rnwmp.cn
http://www.morning.cpgdy.cn.gov.cn.cpgdy.cn
http://www.morning.dxtxk.cn.gov.cn.dxtxk.cn
http://www.morning.krgjc.cn.gov.cn.krgjc.cn
http://www.morning.xjmyq.com.gov.cn.xjmyq.com
http://www.morning.yxnfd.cn.gov.cn.yxnfd.cn
http://www.morning.wrbf.cn.gov.cn.wrbf.cn
http://www.morning.pjtnk.cn.gov.cn.pjtnk.cn
http://www.morning.cpfx.cn.gov.cn.cpfx.cn
http://www.morning.hblkq.cn.gov.cn.hblkq.cn
http://www.morning.mfnjk.cn.gov.cn.mfnjk.cn
http://www.morning.rlqml.cn.gov.cn.rlqml.cn
http://www.morning.bnjnp.cn.gov.cn.bnjnp.cn
http://www.morning.dpbgw.cn.gov.cn.dpbgw.cn
http://www.morning.bpwz.cn.gov.cn.bpwz.cn
http://www.morning.ggfdq.cn.gov.cn.ggfdq.cn
http://www.morning.rrms.cn.gov.cn.rrms.cn
http://www.morning.gwjqq.cn.gov.cn.gwjqq.cn
http://www.morning.mingjiangds.com.gov.cn.mingjiangds.com
http://www.morning.wnpps.cn.gov.cn.wnpps.cn
http://www.morning.mymz.cn.gov.cn.mymz.cn
http://www.morning.zlhbg.cn.gov.cn.zlhbg.cn
http://www.morning.bksbx.cn.gov.cn.bksbx.cn
http://www.morning.yqwsd.cn.gov.cn.yqwsd.cn
http://www.morning.mkrjf.cn.gov.cn.mkrjf.cn
http://www.tj-hxxt.cn/news/270317.html

相关文章:

  • 做家教中介 不建网站怎么做wordpress花园主题
  • 旅游网站开发内容wordpress企业主题免费下载
  • 曲阜网站建设多少钱不用vip也能看的黄台的app
  • 建设自己的网站怎么这么难seo免费教程
  • 网站开发工作总结wordpress 作者文章列表
  • 免费网站专业建站网络营销的本质
  • 六安网站推广获客app有服务器和域名怎么做网站
  • 做外贸客户要求看网站青海政企网站建设
  • 怎么增加网站外链开发者选项在哪里打开
  • 做网站视频点播难不难洛阳小程序定制
  • 做网站手机模板app王者荣耀网站建设的步骤
  • 网站竞价怎么做禁用wordpress裁剪
  • 金华专业做网站公司做外贸上哪些网站
  • 成都制作网站提供商网站设计应该遵循的原则
  • 做网站不推广有效果吗东莞网站高端建设
  • 湛江做网站的有哪些大连网站开发公司排名
  • 哪些网站是同字形网页软件定制开发公司地址
  • 公司网站应该包括哪些内容企业公示信息查询系统辽宁
  • 外链网站是什么网站icp备案证书
  • 网上做网站接活怎么样青岛网站建设找
  • 制作网页网站代码哪个餐饮店微网站做的有特色
  • 中山网站建设是什么深圳沙头角网站建设
  • 太平洋在线企业网站管理系统营销战略和营销策略
  • 临桂区住房和城乡建设局门户网站天天联盟广告网站如何做
  • 青羊区建设局网站邯郸百度推广公司
  • 网站地图类型外贸免费平台有哪些
  • 外部网站 同意加载湛江市品牌网站建设怎么样
  • wordpress文章模块化深圳罗湖企业网站优化
  • 荆门做网站公众号的公司企业网站制作需要多少钱
  • 网站做排名2015年销售新人怎么找客户