麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > web面試題:react面試題(setState)

web面試題:react面試題(setState)

來源:千鋒教育
發布人:wjy
時間: 2022-06-06 14:42:00 1654497720

# react面試題-setState可能會被合并?

```text
function incrementMultiple() {
  this.setState({count: this.state.count + 1});
  this.setState({count: this.state.count + 1});
  this.setState({count: this.state.count + 1});
}
請問這個時候,this.state.count的值為多少呢?答案為1
那哪些情況是不會合并呢?
        // 傳入函數,不會被合并。執行結果是 +3
        this.setState((prevState, props) => {
            return {
                count: prevState.count + 1
            }
        })
        this.setState((prevState, props) => {
            return {
                count: prevState.count + 1
            }
        })
        this.setState((prevState, props) => {
            return {
                count: prevState.count + 1
            }
        })
```

web面試題react面試題

 

# react面試題-setState可能是異步更新(是同步還是異步)?

setState為什么設計為異步?可以顯著的提升性能;

- 如果每次調用 setState都進行一次更新,那么意味著render函數會被頻繁調用,界面重新渲染,這樣效率是很低的;
- 最好的辦法應該是獲取到多個更新,之后進行批量更新

那么如何可以獲取到更新后的值呢? 回顧vue nextTick

 方式一:setState的回調

```text
this.setState({
            count: this.state.count + 1
        }, () => {
            // 聯想 Vue $nextTick - DOM
            console.log('count by callback', this.state.count) // 回調函數中可以拿到最新的 state
        })
```

 方式二:在生命周期函數內獲取

```text
//自己定義的 DOM 事件,setState 是同步的。再 componentDidMount 中
        componentDidMount() {
            // 自己定義的 DOM 事件,setState 是同步的
            document.body.addEventListener('click', this.bodyClickHandler)
        }
       bodyClickHandler = () => {
            this.setState({
                count: this.state.count + 1
            })
            console.log('count in body event', this.state.count)
        }
```

 

# react面試題-setState是什么原因決定異步還是同步的?

```text
this.state是否異步,關鍵是看是否命中 batchUpdata 機制,命中就異步,未命中就同步。
```

關于batchUpdate機制咱們看下官網的主流程圖:

web面試題:react面試題2

web面試題:react面試題3

查看batchUpdate是否命中是決定setState異步或者同步的關鍵,如圖所示,如果命中代表當前是異步,會執行保存組件到dirtyComponents中,如果沒有命中會走右邊,遍歷所有dirtyComponents并執行調用和更新操作,當前就是同步。

更多關于web培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 99久久精品免费看国产| 2023av在线播放| 无翼乌邪恶工番口番邪恶| 中文字幕精品视频在线| 波多野结衣四虎| 国产视频中文字幕| 精品国产品香蕉在线观看75| 污网站在线免费看| 工囗番漫画全彩无遮挡| 男女生差差差很痛的app| 妖精视频网址| sihu国产精品永久免费| 夜夜揉揉日日人人视频| 天天看片天天射| 国产精品9999久久久久| 欧美性猛交xxxx乱大交蜜桃| 琪琪色原网站在线观看| 深夜动态福利gif动态进| 黑人巨大两根一起挤进欧美| 穿透明白衬衫喷奶水在线播放| www.俺去| 色鬼7777久久| 无套国产| 中文字幕电影在线观看| 久久精品国产99久久无毒不卡| a级毛片免费完整视频| 动漫美女和男人羞羞漫画| 花传媒季app| 日韩欧美卡一卡二卡新区| 国产一在线精品一区在线观看| 免费看日b视频| 国产高清在线| 一级黄色欧美| 日韩午夜视频在线观看| 宅男噜噜噜66网站| 波多野结衣女同| 午夜一区二区在线观看| 55爱爱网| 国产孕妇做受视频在线观看| 日本一本高清| 在线免费中文字幕|