# react面試題-react不可變值如何理解?
在react中有一條鐵律在修改狀態時千萬不能改變原來的狀態state,怎么理解這句話呢?比如 在組件狀態state中定義一個數組arr:[1,2,3,4],后面每次點擊一個按鈕,都給原數組加個100,可以用 this.state.arr.concat(100) 這樣不會改變原來的數組arr,r如果用push就會改變原來的值。
## react面試題-react合成事件是什么?
`React` 根據 `W3C` 規范定義了每個事件處理函數的參數,即合成事件。
事件處理程序將傳遞 `SyntheticEvent` 的實例,這是一個跨瀏覽器原生事件包裝器。它具有與瀏覽器原生事件相同的接口,包括 `stopPropagation()` 和 `preventDefault()` ,在所有瀏覽器中他們工作方式都相同。
`React` 合成的 `SyntheticEvent` 采用了事件池,這樣做可以大大節省內存,而不會頻繁的創建和銷毀事件對象。
另外,不管在什么瀏覽器環境下,瀏覽器會將該事件類型統一創建為合成事件,從而達到了瀏覽器兼容的目的。
**合成事件對象(react event)**
- 所有事件都掛在到document上
- event不是原生的,是syntheticEvent合成事件對象
- 和vue事件不同和dom事件也不同
react為何要合成事件機制?
1. 更好的兼容性和跨平臺
2. 掛在到document,減少內存消耗,避免頻繁解綁
3. 方便事件統一管理(如事務機制)
# react面試題-在項目中哪些會命中batchUpdate哪些不會命中呢?
哪些能命中batchUpdate機制?
生命周期和他調用的函數,react注冊的事件和他調用的函數,react可以管理的入口 命中的就是異步。
哪些不能命中batchUpdate機制?
setTimeout setInterval和他調用的函數,自定義dom事件和他調用的函數,react管不到的入口 沒命中就是同步。
更多關于web培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。