想請問一下各位前端大佬,我覺得直接修改更方便呀,這樣設計是為了什麼,可以不這樣設計嗎?


如果你嚴格按照這個規則來設計程序

那麼有朝一日你想看一下有哪些地方修改了某個組件的某個屬性 只要debug一下那個方法就可以了

不過vue的手段不止於此

你也可以在watch中監聽屬性達到debug的目的

相比之下還是函數的debug更加清晰


你是說props不允許修改這個事嗎?

因為一個變數可以傳遞給多個子組件,如果你悄悄的修改它,導致其他子組件的props也跟著變了,這對於調試是個麻煩事。並不是說Vue做不到,而是Vue要遵守一些範式。

想修改props,只在子組件內改是允許改的,前提是你要先克隆一份。


寫起來表面上是更方便,然後某天有個bug,和A組件中的一個狀態有關,然後有其他100個組件會在A組件外直接修改這個狀態,你就慢慢排查去吧


為了追蹤數據歷史狀態,這樣可以提供更好的debug和更好的維護性。

其實vue種的設計很多都符合這種思想,比如vuex中的mutaition。

數據的修改應該更容易被追蹤和觀察。這點vuetool就體現出來了。


你朋友知道你有一百萬放在你的銀行卡里,他有辦法不經過你就把這一百萬取出來嗎?


可以直接修改的, 不過你按照規範的話 可以從vue devtool 受益。

我個人也認為比較麻煩,我習慣把js部分封裝成類,然後把類的實例掛載到data,然後 直接xxx.xxx 或者 xxx.x()去調用。子組件要用就把實例傳遞下去。


這都不需要學習設計模式,你可以從外部修改類私有成員嗎?道理是一樣的。

自由不加限制,帶來的一定是強者對弱者的剝削。


這樣不會亂


不理解你的問題,可以直接修改的


主要是為了可維護性。你如果代碼不會和其他人協作,也不用維護,沒啥問題。


推薦閱讀:
相關文章