麻豆黑色丝袜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
主站蜘蛛池模板: 波多野结衣cesd—819| 日韩成人在线网站| 久草香蕉视频| 美女又黄又免费的视频| 欧美换爱交换乱理伦片免费观看| 国产在线视频一区二区三区| 18gay台湾男同亚洲男同| 收集最新中文国产中文字幕| 国产一级片在线| 欧美不卡视频在线观看| 被弄出白浆喷水了视频| 女人张开腿等男人桶免费视频| 污污的小说片段| 国产精品9999久久久久仙踪林| 日本高清免费不卡在线播放| 在线视频一二三区2021不卡| 中文字幕在线播放第一页| 欧美人与性动交另类| 91热视频在线| 欧美午夜一区二区福利视频 | 蜜桃丶麻豆91制片厂| 日韩欧美91| 视频二区三区国产情侣在线| 国产高清一级伦理| 厨房掀起馊子裙子挺进去| 无翼乌本子| 麻豆www传媒| 男人j进女人j啪啪无遮挡动态| 两个丫头稚嫩紧窄小说| 95免费观看体验区视频| 天堂在线影院| 午夜视频91| 久操视频免费观看| 久久丁香五月天综合网| 黑人一个接一个上来糟蹋| 欧美妈妈的朋友| 精品在线一区二区| 国产精品爽爽va在线观看无码| 2017狠狠干| 国产精品久久久久久久久电影网| 欧美高清不卡|