在學習 Angular 的程序中,我意識到父組件向子組件發送資料不需要使用eventemitter,而子組件向父組件發送資料必須使用eventemitter。
- 這是由于javascript 的限制,還是 Angular 本身創建了這樣的機制,如果是這樣,原因是什么?
- 我真的在尋找對此的基本了解,如果有人能給我一個線索,我將不勝感激
uj5u.com熱心網友回復:
我認為原因是(在大多數情況下使用 Angular)變更檢測。一旦父屬性更改,組件將嘗試檢測更改。這也將觸發子組件中的更改檢測(因為屬性可以只傳遞給子組件)。
這意味著資料的隱式流動是從父級到子級,這將導致只需要支持這個方向的變化檢測。如果也支持其他方向,則基本上可以重新渲染整個應用程式以進行任何更改。
這就是為什么需要有一個明確的從孩子到父母的傳播變化流程的原因。因此使用了 EventEmitter。
請記住,您正在處理樹結構。沿著樹處理更改很容易(遍歷樹),但是在兩個方向(向上和向下遍歷)處理它們會導致每次都遍歷整個樹。
請注意,我所知道的所有其他框架都使用相同的方法。道具(如在 React 中)可以隱式傳遞給子級,并且更改可以使用顯式事件(或函式呼叫)“冒泡”組件樹。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530281.html
