一、父傳子
當子組件在父組件中當做標簽使用的時候,給子組件定義一個自定義屬性,值為想要傳遞的數據。
在子組件中通過props進行接收,props是專門用來接收外邊的的數據的,有兩種接收方式,數組和對象,對象可以限制數據的類型。
在這里簡單介紹一下單項數據流的概念。
單向數據流:父組件向子組件傳遞數據的時候,子組件不允許更改父組件的數據,因為父組件會向多個子組件傳值,如果說某個子組件對父組件的數據進行修改的話,很有可能會導致其他的組件發生錯誤,很難對數據的錯誤進行捕捉。
二、子傳父
當子組件在父組件中當做標簽使用的時候,如果子組件需要給父組件傳遞數據的時候,需要在子組件中定義一個自定義的事件,事件名稱不需要加()的
在子組件中通過this.$emit觸發自定義事件,將需要傳遞的參數通過emit的第二個參數進行傳遞
二、非父子組件傳值
1.通過創建一個公共的Vue實例對象,this的指向是不同的,所以不能互相傳值,所以創建一個公共的實例,就可以傳值了,將實例對象綁定在Vue的原型身上即可。傳值的一方調用$emit,接收的一方調用$on,但是這種方法非常耗費性能,我們可以將on,emit等棱出來掛載。
2.用第三方封裝好的eventbus
3自己封裝的$on,$emit,$off等方法。
