首頁 >web前端 >js教程 >如何使用vuex操作state對象

如何使用vuex操作state對象

php中世界最好的语言
php中世界最好的语言原創
2018-06-06 10:09:371447瀏覽

這次帶給大家如何使用vuex操作state對象,使用vuex操作state對象的注意事項有哪些,以下是實戰案例,一起來看一下。

Vuex是什麼?

VueX 是一個專為 Vue.js 應用設計的狀態管理架構,統一管理和維護各個vue元件的可變化狀態(你可以理解成 vue 元件裡的某些 data )。

Vue有五個核心概念,state, getters, mutations, actions, modules。

總結

state => 基本資料
getters => 從基本資料衍生的資料
mutations => 提交更改資料的方法,同步!
actions => 像一個裝飾器,包裹mutations,使其可以非同步。
modules => 模組化Vuex

State

state即Vuex中的基本資料!

單一狀態樹

Vuex使用單一狀態樹,也就是用一個物件就包含了全部的狀態資料。 state作為建構器選項,定義了所有我們需要的基本狀態參數。

在Vue組件中獲得Vuex屬性

•我們可以透過Vue的Computed獲得Vuex的state,如下:

const store = new Vuex.Store({
  state: {
    count:0
  }
})
const app = new Vue({
  //..
  store,
  computed: {
    count: function(){
      return this.$store.state.count
    }
  },
  //..
})

下面看下vuex操作state對象的實例代碼

每當store.state.count 變化的時候, 都會重新求取計算屬性,並且觸發更新相關聯的DOM。

每一個 Vuex 應用程式的核心就是 store(倉庫)。

引用官方文件的兩句話描述下vuex:

#1,Vuex 的狀態儲存是響應式的。當 Vue 元件從 store 讀取狀態的時候,若 store 中的狀態發生變化,那麼對應的元件也會相應地得到高效更新。

2,你不能直接改變 store 的狀態。改變 store 中的狀態的唯一方法就是明確地提交 (commit) mutation。這樣使得我們可以方便地追蹤每一個狀態的變化,從而讓我們能夠實現一些工具來幫助我們更好地了解我們的應用。

使用vuex裡的狀態

1,在根元件中引入store,那麼子元件就可以透過this.$store.state.資料名字得到這個全域屬性了。

我用的vue-cli建立的項目,App.vue就是根元件

App.vue的程式碼

<template>
 <p id="app">
   <h1>{{$store.state.count}}</h1>  
  <router-view/>
 </p>
</template>
<script>
 import store from '@/vuex/store';
export default {
 name: 'App',
 store
}
</script>
<style>
</style>

在component資料夾下Count.vue程式碼

<template>
 <p>
   <h3>{{this.$store.state.count}}</h3>
 </p>
</template>
<script> 
  export default {
    name:'count',
  }
</script>
<style scoped>
</style>

store.js的程式碼

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
const state = {
 count: 1
}
export default new Vuex.Store({
 state,
})

2,透過mapState輔助函數得到全域屬性

這種方式的好處是直接透過屬性名稱就可以使用得到屬性值了。

將Component.vue的程式碼進行改變

<template>
 <p>
   <h3>{{this.$store.state.count}}--{{count}}</h3>
  <h4>{{index2}}</h4>
 </p>
</template>
<script> 
  import { mapState,mapMutations,mapGetters } from "vuex";
  export default {
    name:'count',
    data:function(){
      return {
        index:10
      }
    },
    //通过对象展开运算符vuex里的属性可以与组件局部属性混用。
    computed:{...mapState(['count']),
      index2() {
        return this.index+30;
      }  
    } ,
  }
</script>
<style scoped>
</style>

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

怎麼對vue檔案進行解析

#如何最佳化Vue

以上是如何使用vuex操作state對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn