vue框架中元件可以通過「this root 」的方式訪問根元件的data物件,為何vuex會熱?

時間 2021-05-30 17:35:20

1樓:胖虎

其實怎麼說呢.其實一開始我也有過這樣的想法.如果Vue一開始設計的初衷是這樣的,一切的傳值,一切的元件通訊.

都要依靠Vuex來實現,那麼你會覺得Vue傳值為什麼這麼複雜,或許會這樣問,為什麼Vue傳值這麼複雜,有沒有什麼簡單的方法可以去實現呢.

狀態管理庫非常的多,Vue那麼官方的推薦就是Vuex, 例如React的狀態管理庫就非常的多了.redux,mobx,react-redux-hooks等等非常的多

我曾經提過乙個問.如何快速上手 React 狀態管理?狀態管理的核心,個人認為就是共享資料 share data,

由於各種的狀態管理庫,以及衍生的中介軟體非常的多,有些狀態狀態管理庫已經能很好的勝任了業務需求,但是可能還是有些不能滿足,又衍生出了一部分中介軟體.實際上不管是Vuex還是Redux,其本質的流程都是差不多的.

小專案當中,沒有太多需要全域性去使用的資料.我這裡舉乙個例子可能會很好理解,如果現在業務要做一套及時通訊.那麼有很多東西是需要去共享儲存的,登入資訊.

訊息監聽等等... 這個時候資料流如何實現共享,官方的推薦的Vuex就能很好的處理這些資料狀態.

2樓:呀哈哈

你只看root能拿到全域性物件這點和vuex一樣。但是你卻沒明白,vuex背後反映的一些單向資料流,分層比如module,已經幫你架構好了。不可否認,你完全可以借助root實現乙個和vuex一樣的系統,但是你依然需要做一些工作。

3樓:何以立於世

1. 追蹤變化,主要是方便開發除錯

2. 避免汙染,或隨意修改(類似angularjs裡面的$rootscope)

個人認為,$root的設計初衷對標的就是angularjs中的$rootscope。後來社群有了flux等資料共享的解決方案,所以vuex就出現,同時也解決了$root的缺陷

4樓:whoops

我從使用vuex的角度說一說吧。

用vuex寫過部落格專案,總體感覺上就是比較彆扭。

state/mutation/action需要定義在專門的store裡,需要使用了再從store裡map進來,這樣子我寫乙個元件的時候就經常需要在至少2個檔案之間切換。

可能是我專案規模還不夠大?或者沒真正理解vuex的作用?就感覺特別彆扭,然後也沒感受到有帶來什麼特別大的好處。

等vue3.0正式發布後我打算再重構一下部落格(不用vuex),到時候再看看不用vuex的話會不會有什麼特別難處理的地方吧。

5樓:穩定的強酸

因為是官方風格指南中推薦的。

應該優先通過 Vuex 管理全域性狀態,而不是通過 this.$root 或乙個全域性事件匯流排。

通過 this.$root 和/或全域性事件匯流排管理狀態在很多簡單的情況下都是很方便的,但是並不適用於絕大多數的應用。

Vuex 是 Vue 的官方類 flux 實現,其提供的不僅是乙個管理狀態的中心區域,還是組織、追蹤和除錯狀態變更的好工具。它很好地整合在了 Vue 生態系統之中 (包括完整的 Vue DevTools 支援)。

個人喜歡官方推薦的,至於深層次的為什麼等個大佬來回答。

6樓:「已登出」

你如果單純為了元件傳值,這樣做也不是不可以,官方文件也說了可以作為元件傳值的臨時方案,但不推薦大量使用。vuex可以讓全域性儲存更便於管理,更優雅的寫法,專案比較複雜以後,store可以分成多個模組,設定單獨的namespace。vuex中改變store只能通過提交mutation來實現,便於統一管理,每個元件提交更新store都可以帶額外的引數,來描述更新來自哪個元件,這對於除錯大型應用都是很方便的。

而回到之前的方式,由於每個元件都可以修改this.$root,就可能導致它每次被修改你都無法知道是哪個元件修改的,給除錯帶來困難。

7樓:nostar

我來說說我的理解吧。

一、vuex不是無中生有。是借鑑了其他解決方案專門為vue而產生的。其他解決方案中的資料回溯、監聽中介軟體等功能是必須要有的。

二、如你示例中直接使用$root。小型專案、結構不複雜確實可以用。但是稍微大型之後就會遇到問題,無法回溯,無法利用中介軟體記錄變更日誌、除錯等。

四、在依賴收集和效能方面。我不確定。不發表了。

就這樣。

vue中,父元件可以向子元件傳遞乙個元件(不僅是資料)嗎?

星鑽 這個很簡單,前些日子剛實現了乙個這樣的需求,具體實現方法可以參考v if這些自定義指令。寫乙個自定義指令去生成渲染元件即可。下面有些邏輯是因為是直接通過配置檔案去生成頁面的所以需要你自己去除相關邏輯 你看主邏輯就好了,有時間我給你稍微講解下 letFragmentFactory Vue Fra...

Vue中到底是什麼是父元件,什麼是子元件?

194hhh 我是子元件 上面的html Vue.component my child var new Vue 上面是js vue的核心理念就是用資料驅動dom 切記。這應該就很好懂了吧 何能 new Vue datamymessage 3 Vue的所有效果渲染都是基於元件的。不用把Vue的父元件子...

這個 Vue 元件中的 v if 用法對嗎,正確的寫法應該是怎麼樣的?

芒果Mango 其實寫法上面就有不是正規,元件裡面沒有使用根元素去包裹著,最外面使用乙個div開始 另外建議兩點 1 vue剛開始使用一下開發包去書寫會有個很好報錯提示提醒 2 vue的好處是元件化,不如嘗試直接元件化來直接介入到開發裡面,不過要弄個腳手架來 已登出 入門前端試著回答一下 1首先元件...