vuex進行傳值


為什么使用vuex?

vuex主要是是做數據交互,父子組件傳值可以很容易辦到,但是兄弟組件間傳值(兄弟組件下又有父子組件),或者大型spa單頁面框架項目,頁面多並且一層嵌套一層的傳值,異常麻煩,用vuex來維護共有的狀態或數據會顯得得心應手。

需求:兩個組件A和B,vuex維護的公共數據是 餐館的名稱 resturantName,默認餐館名稱是 飛歌餐館,那么現在A和B頁面顯示的就是飛歌餐館。如果A修改餐館名稱 為 A餐館,則B頁面顯示的將會是  A餐館,反之B修改同理。這就是vuex維護公共狀態或數據的魅力,在一個地方修改了數據,在這個項目的其他頁面都會變成這個數據。

 

 ①首先新建一個 sotre文件夾,分開維護 actions mutations getters

 

 

②在index.js文件中新建vuex 的store實例

*as的意思是 導入這個文件里面的所有內容,就不用一個個實例來導入了。

 

 ③在main.js中導入 store實例

 

 

④在組件A中,定義點擊事件,點擊 修改 餐館的名稱,並把餐館的名稱在事件中用參數進行傳遞。

...mapactions 和 ...mapgetters都是vuex提供的語法糖,在底層已經封裝好了,拿來就能用,簡化了很多操作。

其中...mapActions(['clickAFn']) 相當於this.$store.dispatch('clickAFn',{參數}),mapActions中只需要指定方面即可,參數省略。

...mapGetters(['resturantName'])相當於this.$store.getters.resturantName

 

 B組件同理

 

 ⑤actions中的操作,為了方便理解,ES6的箭頭函數換成了比較好理解的函數,commit提交到mutations中

 

⑥mutations,mutations值所有vuex步驟中唯一能改變數據的操作,在其他步驟修改都是非法的。

在此步驟中,把組件中傳遞過來的  餐館名稱賦值給了vuex共同維護的狀態 resturantName,這時所有的resturantName都變成了餐館A

 

 ⑦在getter中獲取最終的狀態

 

 ⑧在計算屬性中,渲染最終的數據 resturantName

 

轉載自:https://www.jb51.net/article/134853.htm

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM