您好,登錄后才能下訂單哦!
如何快速應用vue中的vuex,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
vuex.js
狀態(數據)管理
在vue中當我們管理數據的時候比較亂,我們要用到下面的這個庫,vuex.js
Vuex介紹
每一個Vuex應用的核心就是store(倉庫),他是用來存儲數據的
"store" 基本上就是一個容器,它包含著你的應用中大部分的狀態(state)。Vuex 和單純的全局對象有以下兩點不同
1.Vuex 的狀態存儲是響應式的
2.你不能直接改變 store 中的狀態
vuex有6個概念
Store(最基本的概念)(創庫)
State (數據)
Getters(可以說是計算屬性)
Mutations
Actions
Modules
讓我們看看怎么來創建一個創庫
store 用來儲存數據(狀態)
new Vuex.Store({})
數據我們放到state里面
state:{}
讓我們看看怎么來讀取里面的數據
store.state.數據
接下來讓我們看看怎么去修改數據
mutations: {}
我們怎么調mutations的數據
用commit()方法來調用
接下來讓我們做一個小效果來看一下vuex在vue中怎么應用
我們做一個購物車加減按鈕的效果
運行效果
<div id="app"></div> <template id="tpl"> <div> <tip></tip> <but></but> </div> </template> <script> var store = new Vuex.Store({ state:{ count:0 }, mutations:{ jia (state) { state.count++ }, jian (state) { state.count-- } } }); var vm = new Vue({ el:"#app", template:"#tpl", components:{ tip:{ template:"<div>{{$store.state.count}}</div>" }, but:{ template:` <div> <input type="button" value="+" @click="$store.commit('jia')"/> <input type="button" value="-" @click="$store.commit('jian')"/> </div> ` } }, store }); </script>
我們從store里面獲取的數據最好放到計算屬性中
當一個組件需要獲取多個狀態時候,將這些狀態都聲明為計算屬性會有些重復和冗余。為了解決這個問題,我們可以使用mapState輔助函數幫助我們生成計算屬性
下面我們做一個小的效果(注意:注釋的計算屬性和下面使用mapState輔助函數2個結果是相同的)
當映射的計算屬性的名稱與 state 的子節點名稱相同時,我們也可以給 mapState 傳一個字符串數組。
運行效果
<script> //我們從store里面獲取的數據最好放到計算屬性中 var store = new Vuex.Store({ state:{ count:0, num1:1, num2:2 }, mutations:{ jia (state) { state.count++ }, jian (state) { state.count-- } } }); var vm = new Vue({ el:"#app", template:"#tpl", components:{ tip:{ //創建計算屬性 // computed:{ // count(){ // return this.$store.state.count; // }, // num1(){ // return this.$store.state.num1; // }, // num2(){ // return this.$store.state.num2; // } // }, //使用mapState輔助函數 //computed:Vuex.mapState({ // count:state=>state.count, //num1:state=>state.num1, //num2:state=>state.num2 //}), //mapState 傳一個字符串數組 computed:Vuex.mapState(['count' , 'num1' , 'num2']), template:"<div>{{count}}{{num1}}{{num2}}</div>" }, but:{ template:` <div> <input type="button" value="+" @click="$store.commit('jia')"/> <input type="button" value="-" @click="$store.commit('jian')"/> </div> ` } }, store }); </script>
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。