1. 程式人生 > >Vue之Vuex使用

Vue之Vuex使用

上篇已經簡單介紹了vuex的部署~這篇就講下Vuex的簡單使用吧

store已經掛載在App Vue根元件~因此就可以像在元件中使用router一樣使用store:

獲取state中某個屬性:this.$store.state.name (name為所需的屬性key)

執行一個commit(mutations中的方法):this.$store.commit('name')  mutations中所定義的名字

執行一個dispatch(就是action中的方法):this.$stotre.dispatch('name') action中所定義的名字

執行一個getter:this.$store.getter.name,類似於state,主要做的是一些資料格式化處理~ 

在專案中的使用也就是如下啦~~

state一般都會寫在computed屬性中啦~,getter就相當於一個vuex的computed

computed:{
 loading(){
  return this.$store.state.loadingStatus
 }
},
created() {
   this.$stroe.commit('SET_BTNSTYLESBG')
  this.$store.dispatch('getBookId')

}

getter的用法也是類似的了~
但是在一些元件中需要引入很多的state狀態值以及共享資料,甚至一些commit操作的時候,感覺太麻煩了!~有沒有一些簡單便捷的方法?
答案是當然有的啦~輔助函式!vuex官方文件有寫 ~極大程度的提高了開發效率~

state,getter,mutatios,actions每一個都有一個相應的輔助函式~下面就詳細說上一說

一般有兩種方法

import { mapState, mapMutations, mapGetters,mapAction } from ‘vuex’

或者 import * as types from ‘vuex’

 第二種是我喜歡的風格~簡單看著舒服~不過第一種看著更加直接一些!

需要寫的位置依舊不變~只是使用方法稍加變化~!

computed: ...typesState(['name', 'userInfo'])

getter的使用跟上面state的一樣~

created() {

    this.name //就是state中的那麼屬性值!

}

在Vuex有說道,所有正常的狀態改變都必須通過commit來進行提交!(所以不要妄圖去直接修改state中的屬性~這樣也許在非嚴格模式下是可以的~但是一旦出了問題,腦殼兒疼的,因為你會找不到你在哪裡做了操作!)

methods:{

/*這裡就是mutation與action放的位置了*/

    ...types.mapMutations(['a', ''b])

    ...types.mapAction(['c', 'd'])    

    上述寫法也可以修改為一下形式:

    ...types.mapMutations({

        'commitA': 'a'

        'commitB': 'b'

    })

    ...types.mapAction({

        'actoinC': 'c',

        'actionD':'d'

    })

}

這種寫法相當於將commitA 對映為a,actionC對映為c,使用是可以直接進行替換~

mounted: {

    /*data就是commit時候所提交的資料,這是使用我們在methods中引入的action,mutation方法了*/

    this.a(data)      ------------------------------- this.commitA(data)

    this.c(data) -------------------------------  tihs.actionC(data)

}

是不是瞬間覺得簡單了很多呢~

相關推薦

vuevuex

ins store vue vuex efault get tor 提交 highlight vuex負責vue的數據管理和共享,適用於大型項目 安裝vuex npm install vuex --save; 運用vuex 主要有五大金剛: export default

vuevuex入門祕籍

如果你在使用 vue.js , 那麼我想你可能會對 vue 元件之間的通訊感到崩潰 。 我在使用基於 vue.js 2.0 的UI框架 ElementUI 開發網站的時候 , 就遇到了這種問題 : 一個頁面有很多表單 , 我試圖將表單寫成一個單檔案元件 , 但是表單 ( 子

VueVuex使用

上篇已經簡單介紹了vuex的部署~這篇就講下Vuex的簡單使用吧store已經掛載在App Vue根元件~因此就可以像在元件中使用router一樣使用store:獲取state中某個屬性:this.$store.state.name (name為所需的屬性key)執行一個co

vue學習---vuex簡介

pac htm 容器 style 包含著 端口 全局 def ren 每一個 Vuex 應用的核心就是 store(倉庫)。"store" 基本上就是一個容器,它包含著你的應用中大部分的狀態(state)。Vuex 和單純的全局對象有以下兩點不同: Vu

Vue入門Vuex實戰

http txt nbsp wid 一次 com striped i++ 可選 引言 Vue組件化做的確實非常徹底,它獨有的vue單文件組件也是做的非常有特色。組件化的同時帶來的是:組件之間的數據共享和通信的難題。 尤其Vue組件設計的就是,父組件通過子組件的prop進行傳

1.Vue + Vue Router + Vuex + Element-UI(二)Vuex

1.Vuex是什麼東西? 包含以下部分: 狀態:state,這是真理,推動我們的應用程式的來源。 檢視:一個宣告性對映狀態; 這些動作是狀態可能因檢視中的使用者輸入而改變的方式。 是單向資料流:如圖: 如下程式碼結構如下: 詳細解析store,如圖所示:

簡述vue狀態管理模式vuex

瞭解vuex核心概念請移步 https://vuex.vuejs.org/zh/ 一、初始vuex 1.1 vuex是什麼 那麼先來看看這兩個問題: 什麼是vuex?官網說:Vuex 是一個專為 Vue.js 應用程式開發的狀態管理模式。 按個人通俗理解來說就是:vuex就是用來管理各個元件之間的一些狀態,可

Vue框架vuex的使用

1.首先需要在你的專案目錄下安裝vuex    終端命令: 2.在全域性元件中匯入與宣告vuex    3.建立store例項物件    let store = new Vuex.store({ state:{ }, mutations:{ }, a

vue全家桶(Vue+Vue-router+Vuex+axios)(Vue+webpack專案實戰系列二)

  一、Vue   系列一已經用vue-cli搭建了Vue專案,此處就不贅述了。 二、Vue-router   Vue的路由,先獻上文件(https://router.vuejs.org/zh-cn/)。   路由在全家桶裡面定位是什麼呢,建立單頁應用!簡單!

vue全家桶vuex

vuex vuex的由來 vuex是一個數據共享狀態管理的倉庫,主要用於中大型專案中的複雜頁面之間的元件傳值(作者個人理解:類似於github的一種資料共享的倉庫) 它是一種類似於facebook 中 Flux vuex 的安裝 和在元件中的使用

1.Vue + Vue Router + Vuex + Element-UI(二)Vue Router

1. Vue Router   Vue Router 是vue.js官方的路由管理器。它和vue.js的核心深度整合,讓構建單頁面應用變得簡單。 以上是使用模組兒化機制程式設計,匯入Vue和VueRouter,需要去呼叫Vue.use(也就是前文說到的VueRoute

Vue學習VueX

圖片 mage mut 菜單 狀態改變 問題 vid alt 解決問題 單向數據流概念 Vuex介紹 解決問題 多個視圖依賴於同一狀態(菜單導航) 來自不同視圖的行為需要變更為同意狀態(例如:評論彈幕) Vuex應運而生 為vue.js開發的狀態管理模式 組件狀態集

Vue 狀態管理 vuex 學習

Vuex 介紹 Vuex 是一個專為 Vue.js 應用程式開發的 狀態管理模式。 它採用集中式儲存管理應用的所有元件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。 舉一個很常見的例子:子元件呼叫父元件一般通過event 來完成,比如 this

基於vue-cli的vue專案vuex的使用3-------action非同步傳參

由於使用commit是同步的,所以也就有了使用“非同步”的action的誕生 1.store.js//配置倉庫第十五行到第二十三行配置action, import Vue from 'vue'; im

基於vue-cli的vue專案vuex的使用4-------moudles分塊

按照官方文件,就是為了避免程式碼太長了。所以使用了moudle 1.store.js//配置倉庫,第五道第二十六為一個模組。第二十七到四十八為一個模組,在第四十九到五十四行丟擲 import Vue from 'vue'; import Vuex from 'vuex';

Vuevue.js聲明式渲染

這一 logs 類型檢測 body 表達式 頁面 渲染 strong setter Html: <div id="app"> {{ message }} </div> Vue: var app = new Vue({ el: ‘#

【22】Vue Vue Devtools

rom 創建 png ins -c 擴展程序 安裝 搜索 項目 vue安裝: # 最新穩定版 $ npm install vue # 全局安裝 vue-cli $ npm install --global vue-cli # 創建一個基於 webpack 模板的新項目 $

vue生命周期

進行 es2017 pre 瀏覽器 bsp 重新 分享 發現 for <!DOCTYPE html> <html> <head> <title></title> <script type=

Web App 分層架構(基於 Vue+Router+Vuex

組件 產生 行數據 之間 不能 程序 簡單的 用戶 工作 一、分層架構   1.Web App分為三層:行為層, 數據存儲層和協議層,各層的的分工是非常明確的。     a.行為層, 體現在.vue組件和路由上,存放一些簡單的數據主要用於與用戶之間的及時

Vue交互

sta resource title then jsonp url viewport www ack 1.get() <!DOCTYPE html> <html lang="en"> <head> <meta