麻豆黑色丝袜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
主站蜘蛛池模板: 啊轻点灬大ji巴太粗太长了h| 国内a级毛片免费···| 黑人巨鞭大战洋妞| 樱花草在线社区www韩国| 一个人看的www高清频道免费| 天堂中文字幕在线| 韩国免费乱理论片在线观看2018| 欧美日韩视频| 我和岳乱妇三级高清电影| 波多野结衣porn| 日韩欧美91| 扒开双腿猛进入免费观看美女| 一区二区三区www| 西西人体www44rt大胆高清| 2022国产精品最新在线 | 羞羞的漫画sss| 精品剧情v国产在免费线观看| 羞羞视频在线播放| 噜噜噜在线视频免费观看| 欧美高清hd| 色九月亚洲综合网| 奇米网奇米色| 把腿抬起来就可以吃到扇贝了| 中文字幕在线视频免费观看| 国产色综合久久无码有码| 调教视频h| 91精品国产91久久久久久| 伊人久久大香线蕉久久婷婷| 日本乱子伦xxxx| 引诱亲女乱小说| 美女扒开屁股给男人看无遮挡| 欧美精品久久天天躁| 美女扒开尿口让男人捅| 好爽好黄的视频| 果冻传媒国产电影免费看| 色列有妖气acg全彩本子| 日韩精品视频在线观看免费| 一个人看的片免费高清大全| 成人av免费电影| 欧美日韩一级二级三级 | 1卡2卡三卡4卡国产|