父組件傳值,子組件監聽,明明很簡單的一個事情,硬是卡了許久(畢竟不是專業搞前端的,還是吃虧在學識淺陋)。也和自己鑽牛角尖有關,想自己解決問題。
早期我寫過一篇vue組件傳值的文章,傳值方式是這樣的:

官網的簡單實例也是這樣的:

用中括號包含參數即可,至於參數是什么類型,你傳值的時候給就行了,用的時候直接用。因為JS是弱類型語言,這塊可以不指定參數類型。
當然,也可以指定,今天遇到的問題就在於這個指定了參數類型。先看官網對於參數類型的描述:

然后是做法:

下午的卡殼就在這個type上, 之前寫js習慣了弱類型var的運用,不太習慣去指定這里的type,導致傳遞了一個對象沒有被接收。無語了~
知道為什么以后事情做起來就容易很多了:

不糾結類型, 直接傳過來就完事,怎么用我肯定知道,畢竟是自己寫的參數。這樣的好處是在配合watch事件使用時賊方便,哪怕你給子頁面賦值報錯了,也沒事,改正就好了,重點是什么,是這樣做watch事件不會因為類型錯誤而無法觸發!!這個坑太深.... 正常來講參數只要傳了,變化了,watch事件時可以監聽到的,但是我這里類型給錯了直接導致watch事件不觸發,頁面也不報錯,得硬看代碼逐行調試才知道為什么。所以說有時候報錯是好的, 錯誤信息能幫助你定位問題,而最可怕的問題反而是什么錯也沒有,功能出不來,這真的令人抓狂。
當然了, 參數是否指定類型以及是否給予默認值,這個得由開發者來決定,有時候還要看項目具體情況,我這里只是吐槽一下剛剛踩到的坑。網上也有其他的一些諸如watch事件不觸發的問題,但我想估計沒我這個坑, 可能有的人也遇到類似的問題吧。
