成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

淺入深出setState(上篇)

wow_worktile / 2560人閱讀

摘要:點(diǎn)燃引擎這是一個(gè)組件實(shí)現(xiàn)組件可交互所需的流程,輸出虛擬,虛擬轉(zhuǎn)為,再在上注冊(cè)事件,事件觸發(fā)修改數(shù)據(jù),在每次調(diào)用方法時(shí),會(huì)自動(dòng)執(zhí)行方法來(lái)更新虛擬,如果組件已經(jīng)被渲染,那么還會(huì)更新到中去。

Part one - setState點(diǎn)燃引擎

這是一個(gè)React組件實(shí)現(xiàn)組件可交互所需的流程,render()輸出虛擬DOM,虛擬DOM轉(zhuǎn)為DOM,再在DOM上注冊(cè)事件,事件觸發(fā)setState()修改數(shù)據(jù),在每次調(diào)用setState方法時(shí),React會(huì)自動(dòng)執(zhí)行render方法來(lái)更新虛擬DOM,如果組件已經(jīng)被渲染,那么還會(huì)更新到DOM中去。?這個(gè)過(guò)程,setState就像一個(gè)點(diǎn)燃引擎的打火石,發(fā)動(dòng)了React核心的調(diào)度層,然后直至渲染層的改變。

Part two - setState是異步的

剛接觸React的同學(xué),對(duì)React的setState的使用偶爾會(huì)有一些偏頗,出現(xiàn)一些意料之外的情況。
比如:

onClickForReset=()=>{
    this.setState({value: []});
    // 此刻立馬取this.state做一些同步操作
    console.log(this.state.value);
}

或者是

increateCount(){
    this.setState({count: this.state.count + 1});
    this.setState({count: this.state.count + 1});
    this.setState({count: this.state.count + 1});
}

我們可以看一個(gè)現(xiàn)在的例子:
https://codesandbox.io/s/qqy9n5o2m9

setState比較熟練的同學(xué)可以跳過(guò)這一段代碼,但是有些剛學(xué)會(huì)使用React的同學(xué)經(jīng)常會(huì)犯這個(gè)錯(cuò)誤,一開始我只能粗暴地說(shuō):

setState是異步的,不會(huì)立即改變state的值。

多次setState調(diào)用生成的效果會(huì)合并。

第二個(gè)參數(shù)可以是一個(gè)回調(diào)函數(shù)。

setState可以接受一個(gè)函數(shù)(例子改動(dòng))

后來(lái)我逐漸也在想下面這兩個(gè)問(wèn)題,現(xiàn)在這篇文章試圖盡量弄清的兩件事:

為什么要把setState設(shè)計(jì)成異步的,緣由是什么,解決了什么問(wèn)題,有什么好處?

如何實(shí)現(xiàn)異步的setState,整體原理是怎樣的,有沒(méi)有什么特殊的騷操作?

我們可以自己也想一想,下面留給大家一片空白區(qū)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96075.html

相關(guān)文章

  • JavaScript五十問(wèn)——淺入深出,自己實(shí)現(xiàn)一個(gè) ES 6 Promise

    摘要:以上實(shí)現(xiàn)了最簡(jiǎn)單的一個(gè)測(cè)試代碼當(dāng)然,這不能算是一個(gè),目前僅僅實(shí)現(xiàn)了根據(jù)狀態(tài)調(diào)用不同的回調(diào)函數(shù)。靜態(tài)函數(shù)接下來(lái)是的各種靜態(tài)函數(shù)每一個(gè)都執(zhí)行完畢后返回總結(jié)現(xiàn)在,一個(gè)完整的對(duì)象就完成了。 前言 說(shuō)到 ES6,Promise 是繞不過(guò)的問(wèn)題;如果說(shuō) ES6 的 Class 是基于 Javascript 原型繼承的封裝,那么 Promise 則是對(duì) callback 回調(diào)機(jī)制的改進(jìn)。這篇文章,不...

    hiyayiji 評(píng)論0 收藏0
  • PHPer 面試指南-擴(kuò)展閱讀資源整理

    摘要:前端篇收集的前端面試題和答案前端開發(fā)面試題史上最全的前端面試題匯總及答案前端工程師手冊(cè)協(xié)議工作原理協(xié)議運(yùn)行機(jī)制的概述協(xié)議篇原理原理解析的工作原理與的區(qū)別理解后端篇年的面試總結(jié)垃圾回收機(jī)制面向?qū)ο笤O(shè)計(jì)淺談?wù)f清楚是什么和的區(qū)別索引原理及慢查 前端篇 收集的前端面試題和答案 前端開發(fā)面試題 史上最全的web前端面試題匯總及答案 前端工程師手冊(cè) HTTP協(xié)議:工作原理 SSL/TLS協(xié)議運(yùn)行...

    wemall 評(píng)論0 收藏0
  • 從項(xiàng)目中由入深的學(xué)習(xí)koa 、mongodb(4)

    摘要:序列文章從項(xiàng)目中由淺入深的學(xué)習(xí)微信小程序和快應(yīng)用從項(xiàng)目中由淺入深的學(xué)習(xí)從項(xiàng)目中由淺入深的學(xué)習(xí)前言的出現(xiàn)前端已經(jīng)可以用一把梭從前端寫到后臺(tái)。 showImg(https://segmentfault.com/img/bVbrRI5?w=1920&h=1080); 序列文章 從項(xiàng)目中由淺入深的學(xué)習(xí)vue,微信小程序和快應(yīng)用 (1)從項(xiàng)目中由淺入深的學(xué)習(xí)react (2)從項(xiàng)目中由淺入深的學(xué)...

    null1145 評(píng)論0 收藏0
  • 從項(xiàng)目中由入深的學(xué)習(xí)typescript (3)

    摘要:序列文章從項(xiàng)目中由淺入深的學(xué)習(xí)微信小程序和快應(yīng)用從項(xiàng)目中由淺入深的學(xué)習(xí)前言為什么會(huì)有大家有沒(méi)想過(guò)這個(gè)問(wèn)題原因是是弱類型編程語(yǔ)言也就是申明變量類型可以任意變換。是的超集,也相當(dāng)于預(yù)處理器本文通過(guò)一個(gè)項(xiàng)目來(lái)讓你快速上手。 showImg(https://segmentfault.com/img/bVbruJw?w=1024&h=768); 序列文章 從項(xiàng)目中由淺入深的學(xué)習(xí)vue,微信小程序...

    ninefive 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<