摘要:點燃引擎這是一個組件實現(xiàn)組件可交互所需的流程,輸出虛擬,虛擬轉為,再在上注冊事件,事件觸發(fā)修改數(shù)據(jù),在每次調(diào)用方法時,會自動執(zhí)行方法來更新虛擬,如果組件已經(jīng)被渲染,那么還會更新到中去。
Part one - setState點燃引擎
這是一個React組件實現(xiàn)組件可交互所需的流程,render()輸出虛擬DOM,虛擬DOM轉為DOM,再在DOM上注冊事件,事件觸發(fā)setState()修改數(shù)據(jù),在每次調(diào)用setState方法時,React會自動執(zhí)行render方法來更新虛擬DOM,如果組件已經(jīng)被渲染,那么還會更新到DOM中去。?這個過程,setState就像一個點燃引擎的打火石,發(fā)動了React核心的調(diào)度層,然后直至渲染層的改變。
Part two - setState是異步的剛接觸React的同學,對React的setState的使用偶爾會有一些偏頗,出現(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}); }
我們可以看一個現(xiàn)在的例子:
https://codesandbox.io/s/qqy9n5o2m9
setState比較熟練的同學可以跳過這一段代碼,但是有些剛學會使用React的同學經(jīng)常會犯這個錯誤,一開始我只能粗暴地說:
setState是異步的,不會立即改變state的值。
多次setState調(diào)用生成的效果會合并。
第二個參數(shù)可以是一個回調(diào)函數(shù)。
setState可以接受一個函數(shù)(例子改動)
后來我逐漸也在想下面這兩個問題,現(xiàn)在這篇文章試圖盡量弄清的兩件事:
為什么要把setState設計成異步的,緣由是什么,解決了什么問題,有什么好處?
如何實現(xiàn)異步的setState,整體原理是怎樣的,有沒有什么特殊的騷操作?
我們可以自己也想一想,下面留給大家一片空白區(qū)。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/96075.html
摘要:以上實現(xiàn)了最簡單的一個測試代碼當然,這不能算是一個,目前僅僅實現(xiàn)了根據(jù)狀態(tài)調(diào)用不同的回調(diào)函數(shù)。靜態(tài)函數(shù)接下來是的各種靜態(tài)函數(shù)每一個都執(zhí)行完畢后返回總結現(xiàn)在,一個完整的對象就完成了。 前言 說到 ES6,Promise 是繞不過的問題;如果說 ES6 的 Class 是基于 Javascript 原型繼承的封裝,那么 Promise 則是對 callback 回調(diào)機制的改進。這篇文章,不...
摘要:前端篇收集的前端面試題和答案前端開發(fā)面試題史上最全的前端面試題匯總及答案前端工程師手冊協(xié)議工作原理協(xié)議運行機制的概述協(xié)議篇原理原理解析的工作原理與的區(qū)別理解后端篇年的面試總結垃圾回收機制面向對象設計淺談說清楚是什么和的區(qū)別索引原理及慢查 前端篇 收集的前端面試題和答案 前端開發(fā)面試題 史上最全的web前端面試題匯總及答案 前端工程師手冊 HTTP協(xié)議:工作原理 SSL/TLS協(xié)議運行...
摘要:序列文章從項目中由淺入深的學習微信小程序和快應用從項目中由淺入深的學習從項目中由淺入深的學習前言的出現(xiàn)前端已經(jīng)可以用一把梭從前端寫到后臺。 showImg(https://segmentfault.com/img/bVbrRI5?w=1920&h=1080); 序列文章 從項目中由淺入深的學習vue,微信小程序和快應用 (1)從項目中由淺入深的學習react (2)從項目中由淺入深的學...
摘要:序列文章從項目中由淺入深的學習微信小程序和快應用從項目中由淺入深的學習前言為什么會有大家有沒想過這個問題原因是是弱類型編程語言也就是申明變量類型可以任意變換。是的超集,也相當于預處理器本文通過一個項目來讓你快速上手。 showImg(https://segmentfault.com/img/bVbruJw?w=1024&h=768); 序列文章 從項目中由淺入深的學習vue,微信小程序...
閱讀 2107·2023-04-25 15:11
閱讀 3730·2021-09-23 11:57
閱讀 1441·2021-07-26 23:38
閱讀 1388·2019-08-30 15:54
閱讀 686·2019-08-30 15:53
閱讀 3302·2019-08-26 13:36
閱讀 1046·2019-08-26 12:01
閱讀 2927·2019-08-23 16:21