欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解vuex的簡單使用

 更新時間:2018年03月12日 09:30:22   作者:smile  
這篇文章主要介紹了詳解vuex的簡單使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1 目錄的配置

根據(jù)官方推薦在src目錄里面創(chuàng)建store目錄

2 創(chuàng)建store里面的文件

根據(jù)官方推薦創(chuàng)建 actions.js, getters.js,index.js, mutations.js, mutations-types.js, state.js

2.1 state.js

state.js: 是vuex的單一狀態(tài)數(shù),用一個對象就包含了全部的應用層級狀態(tài)。至此它便作為一個『唯一數(shù)據(jù)源(SSOT)』而存在。這也意味著,每個應用將僅僅包含一個 store 實例。單一狀態(tài)樹讓我們能夠直接地定位任一特定的狀態(tài)片段,在調試的過程中也能輕易地取得整個當前應用狀態(tài)的快照。(用來管理所有vuex狀態(tài)數(shù)據(jù))

/*
* 是vuex的單一狀態(tài)數(shù),用一個對象就包含了全部的應用層級狀態(tài)
* 單一狀態(tài)樹讓我們能夠直接地定位任一特定的狀態(tài)片段,在調試的過程中也能輕易地取得整個當前應用狀態(tài)的快照。(用來管理所有vuex狀態(tài)數(shù)據(jù))
*
*/

const state = {

 // 城市狀態(tài),用來管理城市
 city: {},
 cityList: [],
 fullScreen: true,
 palyer: false
};

export default state;

2.2 mutations-types.js 存取mutations相關的字符常量 (一些常量)

/*
* 存取mutations相關的字符常量
*
*/

// 定義常量并導出
export const SET_CITY = 'SET_CITY';
export const SET_PLAY = 'SET_PLAY';
export const SET_FULL_SCREEN = 'SET_FULL_SCREEN';
export const SET_CITY_LIST = 'SET_CITY_LIST';

2.3 mutations.js (定義修改的操作)

更改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation。Vuex 中的 mutations 非常類似于事件:每個 mutation 都有一個字符串的 事件類型 (type) 和 一個 回調函數(shù) (handler)。這個回調函數(shù)就是我們實際進行狀態(tài)更改的地方,并且它會接受 state 作為第一個參數(shù)

/*
 * 更改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation
 * Vuex 中的 mutations 非常類似于事件:每個 mutation 都有一個字符串的 事件類型 (type) 和 一個 回調函數(shù) (handler)。這個回調函數(shù)就是我們實際進行狀態(tài)更改的地方,并且它會接受 state 作為第一個參數(shù)
 */

// 導入mutation-type.js里面所有的常量
import * as types from './mutation-types';

// 定義一個mutation可以供設置和修改值
const mutations = {

 /*
 * 1 表達式作為屬性表達式放在方括號之內
 * 2 形參state (獲取當前狀態(tài)樹的state)
 * 3 形參city,是提交mutation時傳的參數(shù)
 * 4 使用mutation便于書寫方便
 * 5 這個操作相當于往state.js里面寫入city
  */
 [types.SET_CITY](state, city) {
  state.city = city;
 },
 [types.SET_CITY_LIST](state, list) {
  state.cityList = list;
 },
 [types.SET_FULL_SCREEN](state, flag) {
  state.fullScreen = flag;
 },
 [types.SET_PLAY](state, palyState) {
  state.palyer = palyState;
 }
};

// 導出mutation
export default mutations;

2.4 getters.js 有時候我們需要從 store 中的 state 中派生出一些狀態(tài)。

mapGetters 輔助函數(shù)僅僅是將 store 中的 getters 映射到局部計算屬性

/*
* 有時候我們需要從 store 中的 state 中派生出一些狀態(tài)
* 這里的常量主要是對state里面做一些映射
* mapGetters 輔助函數(shù)僅僅是將 store 中的 getters 映射到局部計算屬性
*/

// 對state里面的屬性做一些映射

export const city = state => state.city;  // 箭頭函數(shù)的簡寫
export const cityList = state => state.cityList;
export const fullScreen = state => state.fullScreen;
export const palyer = state => state.palyer;

2.5 actions.js

Action 類似于 mutation,不同在于:

  1. Action 提交的是 mutation,而不是直接變更狀態(tài)。
  2. Action 可以包含任意異步操作。
  3. 在一個動作中多次改變mutation可以封裝一個action
/*
* actions類似mutation
* 區(qū)別:
* 1:action提交的是mutation
* 2:action可以包含任意異步操作
*/

/*
 * 使用:
 * 1:在一個動作中多次改變mutation可以封裝一個action
 */

import * as types from './mutation-types';

export const selectList = function ({commit, state}, {list, index}) {
 commit(types.SET_CITY_LIST, list);
 commit(types.SET_PLAY, false);
 commit(types.SET_FULL_SCREEN, true);
};

2.6 index.js入口

/*
* 入口
*/

import Vue from 'vue';
import Vuex from 'vuex';

// import * as obj from 'xxxx'; 會將xxxx中所有export導出的內容組合成一個對象返回。
import * as actions from './actions';

// 拿到getters里面的映射
import * as getters from './getter';
import state from './state';
import mutations from './mutations';
import createdLogger from 'vuex/dist/logger';

Vue.use(Vuex);
const debug = process.env.NODE_ENV != 'production';

export default new Vuex.Store({
 actions,
 getters,
 state,
 mutations,
 strict: debug,
 plugins: debug ? [createdLogger()] : []
});

3 使用

3.1 在mian.js注冊store

在main.js里面new的Vue的實例里面注冊store

3.2 寫入值,要在組件中引入mapMutations的語法糖

引入語法糖

import {mapMutations, mapActions} from 'vuex';

在methods里面mapMutations 輔助函數(shù)將組件中的 methods 映射為 store.commit 調用

...mapMutations({
 // 這里和mutation里面的常量做一個映射
 setCity: 'SET_CITY'
})

在需要的地方寫入值

this.setCity(city);

3.3獲取值

獲得vuex中的值,要在組件中引入mapGetters(mapGetters 輔助函數(shù)僅僅是將 store 中的 getters 映射到局部計算屬性)

引入mapGetters

import {mapGetters} from 'vuex';

在computed計算屬性里面使用對象展開運算符將 getters 混入 computed 對象中

computed: {
  // 這里面的city映射的是state.js里面的city
  // 可以映射多個值
  ...mapGetters([
   'city',
   'cityList',
   'palyer',
   'fullScreen'
  ])
 }

拿到值

created() {
  console.log(this.city);
  console.log(this.cityList[1]);
  console.log(this.palyer);
  console.log(this.fullScreen);
 }

3.4 action存入值

...mapActions(['selectList'])

在需要存入的地方使用

this.selectList({
 list: this.citys,
 index: 1
});

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • vue項目使用jszip和file-saver批量打包壓縮圖片或附件方式

    vue項目使用jszip和file-saver批量打包壓縮圖片或附件方式

    這篇文章主要介紹了vue項目使用jszip和file-saver批量打包壓縮圖片或附件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue引入jq插件的實例講解

    vue引入jq插件的實例講解

    下面小編就為大家?guī)硪黄獀ue引入jq插件的實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Vite內網(wǎng)ip訪問2種配置方式

    Vite內網(wǎng)ip訪問2種配置方式

    這篇文章主要給大家介紹了關于Vite內網(wǎng)ip訪問的2種配置方式,文中通過實例代碼介紹的非常詳細,對大家學習或者使用Vite具有一定的參考學習價值,需要的朋友可以參考下
    2023-07-07
  • vue無法加載文件C:\xx\AppData\Roaming\npm\vue.ps1系統(tǒng)禁止運行腳本

    vue無法加載文件C:\xx\AppData\Roaming\npm\vue.ps1系統(tǒng)禁止運行腳本

    這篇文章主要介紹了vue?:?無法加載文件?C:\xx\AppData\Roaming\npm\vue.ps1...系統(tǒng)上禁止運行腳本問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Vue登錄功能實現(xiàn)

    Vue登錄功能實現(xiàn)

    本文主要介紹了 Vue 登錄功能實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue在mounted拿不到props中傳遞的數(shù)據(jù)問題

    vue在mounted拿不到props中傳遞的數(shù)據(jù)問題

    這篇文章主要介紹了vue在mounted拿不到props中傳遞的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue.js+Layer表格數(shù)據(jù)綁定與實現(xiàn)更新的實例

    Vue.js+Layer表格數(shù)據(jù)綁定與實現(xiàn)更新的實例

    下面小編就為大家分享一篇Vue.js+Layer表格數(shù)據(jù)綁定與實現(xiàn)更新的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 梳理一下vue中的生命周期

    梳理一下vue中的生命周期

    看過很多人講vue的生命周期,但總是被繞的云里霧里,尤其是自學的同學,可能js的基礎也不是太牢固,聽起來更是吃力,那我就已個人之淺見,以大白話的方式給大家梳理一下,如有不準確的地方,歡迎指正!
    2020-12-12
  • Vue3父子組件互調方法的實現(xiàn)

    Vue3父子組件互調方法的實現(xiàn)

    本文主要介紹了Vue3父子組件互調方法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • 打包組件報錯:Error:Cannot?find?module?'vue/compiler-sfc'

    打包組件報錯:Error:Cannot?find?module?'vue/compiler-sfc&ap

    最近遇到這樣的問題,vue組件庫搭建過程中使用webpack打包組件時報錯,本文給大家分享打包組件報錯:Error:?Cannot?find?module?‘vue/compiler-sfc‘的解決方法,感興趣的朋友一起看看吧
    2023-12-12

最新評論