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

游仙建设局官方网站做百度微信小程序都有哪些网站

游仙建设局官方网站,做百度微信小程序都有哪些网站,专门做折扣的网站有哪些,wordpress分类文章倒序函数setState函数是异步的还是同步的#xff1f; 可能很多同学在看到这个问题的时候#xff0c;甚至搞不清楚这个问题在问什么。 不要慌#xff0c;我们看一下下面这个例子,首先我们创建一个类组件,这个类组件中#xff0c;我们定义了state是一个对象#xff0c;对象中有一个…setState函数是异步的还是同步的 可能很多同学在看到这个问题的时候甚至搞不清楚这个问题在问什么。 不要慌我们看一下下面这个例子,首先我们创建一个类组件,这个类组件中我们定义了state是一个对象对象中有一个属性为countcount的初始值为0,再页面中设置了一个h2标签标签显示count的值同时添加了一个button按钮每次点击按钮使用setState对count进行1同时输出当前count的值 class Example extends React.Component {constructor(props) {super(props);this.state {count: 0};}render() {return (divh2count: {this.state.count}./h2button onClick{(){this.setState({count:this.state.count1});console.log(count,this.state.count);}}/button/div);}}运行之后大家可以尝试一下点击按钮之后count在页面中会显示count:1,但是控制台console.log输出的是0再点击一次count在页面中会显示count:2,但是控制台console.log输出的是1不管我们点击多少次情况一直是这样。 但是从代码的角度上来说点击之后setState起作用这个时候console出来的state应该是最新的state才对但是输出结果却不是这样的console.log中没有同步更新数据所以我们认为setState是异步处理数据变化的 这句话怎么理解呢? 首先我们来看一下setState的定义setState接受一个带有形式参数的 updater 函数也可能直接是一个对象与一个回调callback可选。 setState(updater, [callback]) 官方明确表示setState对于this.state并不是立刻更新若在调用setState后想要立刻获取到最新的this.state那么建议在setState的callback或者声明周期componentDidUpdate中获取 所以如果立即想获得setState更新后的数据可以写在callback中 class Example extends React.Component {constructor(props) {super(props);this.state {count: 0};}render() {return (divh2count: {this.state.count}./h2button onClick{(){this.setState({count:this.state.count1},(){console.log(count,this.state.count);});}}/button/div);}}这个时候我们运行后就能发现我们能立马获得setState更新后的数据。 回到我们刚开始的问题setState是同步的还是异步的用一句话概括就是 异步更新同步执行setState函数本身并不是异步的但是对state的处理机制给人一种异步的假象state处理一般发生在生命周期发生变化的时候 为什么官方要这样去设置呢我们继续深挖一下依然是上面的代码但是click函数中setState函数调用了两次 class Example extends React.Component {constructor(props) {super(props);this.state {count: 0};}render() {return (divh2count: {this.state.count}./h2button onClick{(){this.setState({count:this.state.count1},(){console.log(count,this.state.count);});this.setState({count:this.state.count1},(){console.log(count,this.state.count);});}}/button/div);}}当点击按钮我们需要连着两次执行setState那么react会帮我们修改两次this.state然后重新render两次吗很明显并不是react会批量合并多次setState操作上述例子num最终是2且render在点击后只会渲染一次。 也就是我们所说的只有生命周期发生变化state才会变化否则this.state一直拿到的就是上一次渲染后的。 React在开始重新渲染之前 会有意地进行等待直到所有在组件的事件处理函数内调用的 setState()都完成之后再做最终的this.state变更这样可以通过避免不必要的重新渲染来提升性能。 那么如果我们的目的就是想让他连着更新两次呢该怎么修改这段代码呢 前面我们讲了setState的定义setState(updater, [callback])第一个参数updater除了可以是对象还可以是函数写成函数就可以解决这个问题了 class Example extends React.Component {constructor(props) {super(props);this.state {count: 0};}render() {return (divh2count: {this.state.count}./h2button onClick{(){//这里函数里的参数的prestate和preprops都是最新更改的上一次的state和propsthis.setState((prestate,preprops){return {count:pre.count1}},(){console.log(count,this.state.count);});this.setState((prestate,preprops){return {count:pre.count1}},(){console.log(count,this.state.count);});}}/button/div);}}这样我们发现当我们点击按钮页面的count和终端的count都每次增加2了
http://www.hkea.cn/news/14392278/

相关文章:

  • 快递网站怎么做的延安做网站的公司电话
  • 网站建设及推广枣强知乎营销软件
  • 如何建立网站做微商xunsearch做搜索网站
  • 肥东建设局网站网站模板如何使用 如何修改吗
  • 跨境电商 网站开发邮件格式模板
  • 视频网站开发分析深圳华强北今晚
  • 商城网站模版网络运营工资大概多少
  • .net网站开发工程师太仓有专门做网站的地方吗
  • 深圳建设商城网站福田蒙派克油耗
  • 做类似于彩票的网站犯法吗用dw做网站怎么上传到网站上
  • 网站的关键词在哪里设置鞍山网站建设找金航
  • 做团购网站怎样赚钱北京梵客装饰
  • 太原要做网站的公司网站回头率
  • 兰州做网站维护的公司网站 一级域名 二级域名
  • 响应式企业网站开发所用的平台不花钱网站怎么做推广
  • 外贸个人网站网站开发流程比较合理
  • 网站的连接二维码怎么做dw网页制作教程主页子页
  • 电商网站建设费用公司宣传网站
  • 宜宾营销型网站建设手机微网站制作系统
  • 宁波网站推广外包服务WordPress文章id连号
  • 建设路街道办事处门户网站深圳企业500强
  • 禅城区建网站公司广西哪家公司做网站的
  • 网站开发技术文档包含网站设计与开发实验报告
  • 怎么建立公司网站费用wordpress首页手机版
  • 张家界商城网站建设wordpress主题验证码
  • 网站搜索引擎怎么做表白网页
  • 如何做一家专门卖零食的网站河北网站建设seo优化制作设计
  • 8月4号建设部网站做房产中介网站
  • 苏州建站模板系统免费二维码推广平台
  • 仓库盘点网站开发注册自己的网站怎么注