什么是合成事件(Synthetic event)?它和原生事件有什么區別?
解題思路:解釋合成事件,然后對比原生事件,然后再說他的優勢
1.一致性
在 react里面,這個合成事件是非常重要的,因為它就是為了解決瀏覽器之間與事件模型的一些差異,像一些不同的瀏覽器,對事件的綁定與解綁機制都是會有區別的,如果說react不去抽象這樣一層,到了別的平臺他去實現事件的響應和處理都會出現問題的,于是他在原生事件和我們編寫的代碼中間給他來了一層中間層,這一層也就是合成事件,說白了就是避免瀏覽器差異引起的問題,為了保持一致性
2.事件池化
react在合成事件對象的實現中采用了事件池化策略,這意味著當事件處理完之后,react會將事件對象重新放回到池中,而不是保留每個事件的實例,從而減少消耗內存,事件池化的實現意味著事件對象只能在回調函數中訪問,而回調執行后,屬性會被清空
3.統一的接口
合成事件封裝了標準的原生事件接口,并提供了一致的API來訪問事件的屬性,如event.target,event.preventDefault()和event.stopPrepageation();
區別:
1.瀏覽器的兼容性,合成事件更好,因為原生的事件對于各種瀏覽器處理,訂閱機制不一樣.
2.react的合成事件會通過事件池的來優化訂閱的函數 ,比如useMemo,useCallBack這些函數都可以去緩存函數,和事件池一樣的機制
3.在性能優化方面,原生事件每次都會創建一個事件對象,對性能影響非常大,但合成事件,它是通過事件池來解決的,從而減少了內存的消耗