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

寫給新手同學(xué)的vuex快速上手指北小結(jié)

 更新時(shí)間:2020年04月14日 16:44:59   作者:渣渣帥  
這篇文章主要介紹了寫給新手同學(xué)的vuex快速上手指北小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文介紹了寫給新手同學(xué)的vuex快速上手指北小結(jié),分享給大家,具體如下

引入

//store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
  state: {...},
  mutations: {...},
  actions: {...}
})

export default store

 
//main.js
...
import store from './store'
Vue.prototype.$store = store
const app = new Vue({
  store,...
})
...

//test.vue 使用時(shí):
import {mapState,mapMutations} from 'vuex'

State篇

state更新實(shí)時(shí)渲染是基于==computed==這個(gè)計(jì)算屬性的,直接賦給data只能賦值初始值,不會(huì)隨著state改變實(shí)時(shí)渲染

<!--state改變不會(huì)實(shí)時(shí)渲染-->
export default {
  data() {
   return {
   name:this.$store.state.name,
   };
  },
}
<!--監(jiān)聽state改變重新渲染視圖-->
<template>
  <div>
    {{name}}
  </div>
<template>
export default {
  computed: {
   name() {
   return this.$store.state.name;
   }
  },
}

注意: data中的變量如果和computed中的變量重名,data優(yōu)先,注意命名

獲取多個(gè)state值,寫多個(gè)函數(shù)return,很繁瑣,所以有==mapState==輔助函數(shù)

<!--取多個(gè)很冗余,繁瑣-->
export default {
  computed: {
   token(){
   return this.$store.state.token;
   },
   name(){
   return this.$store.state.name;
   }
  },
}

<!--mapState 直接取出-->
import { mapState } from 'vuex'
export default {
  computed: mapState([
   'token',
   'name'
  ])
}

我們有局部計(jì)算,怎么和mapState一起用?

import { mapState } from 'vuex'
export default {
  computed:{
    getTime(){
      return 123;
    },
    ...mapState([
     'token',
     'name'
    ])
  }
}

我們?yōu)樗饌€(gè)別名

<template>
  <div>
    xiaokeai,dahuilang是我們?nèi)〉膭e名
    token,name是state的值
    {{xiaokeai}}
  </div>
<template>
<script>
  import { mapState } from 'vuex'
  export default {
    computed:{
      ...mapState({
        xiaokeai:"token",
        dahuilang:"name",
      })
    }
  }
</script>

我們要state和data發(fā)生點(diǎn)什么

<template>
  <div>
    假如token的值123;
    balabala的值就是 123皮卡皮
    {{balabala}}
  </div>
<template>
<script>
  import { mapState } from 'vuex'
  export default {
    data(){
      return {
        pikaqiu:"皮卡皮卡"
      }
    }
    computed:{
      ...mapState({
        xiaokeai:"token",
        dahuilang:"name",
        // 為了能夠使用 `this` 獲取局部狀態(tài),使用一個(gè)自定義名字的函數(shù)
        balabala(state){
          return state.token + this.pikaqiu;
        }
      })
    }
  }
</script>

取個(gè)對(duì)象值怎么破?

<template>
 <div>
 {{daSon}}
 {{xiaoSon}}
 </div>
</template>
<script>
  import { mapState } from 'vuex'
  export default {
    data(){
      return {
        pikaqiu:"皮卡皮卡"
      }
    }
    computed:{
      ...mapState({
  daSon: state=>state.obj.yeye.baba.daSon,
  xiaoSon:state=>state.obj.yeye.baba.xiaoSon,
 })
    }
  }
</script>

這種方式取對(duì)象寫到業(yè)務(wù)里不直觀,也不共用,下節(jié)==Getter==有更優(yōu)的方案

Getter篇

Getter是針對(duì)state的【對(duì)象】值提前做一些處理,以便用的時(shí)候直接提取

可以 this.$store.getters.xxx 使用,也可以使用mapGetters輔助函數(shù),==輔助函數(shù)注意:== 和state一樣,注入在computed中

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({
 state: {
 obj: {
  yeye: {
  baba: {
   daSon: "老大",
   xiaoSon: "老二"
  }
  }
 }
 },
 getters: {
    <!--將想要提取或者處理的值這里處理好-->
 getson: state => {
  return state.obj.yeye.baba;
 }
 }
})

export default store

<!--用的時(shí)候,和state一樣,也可以別名等等操作-->
<template>
 <div>
    {{getson}}
 </div>
</template>

<script>
import { mapGetters } from 'vuex'
export default {
 computed: {
  ...mapGetters([
    getson
  ])
 }
}
</script>

Mutation篇

操作: this.$store.commit("名字","值");

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({
 state: {
 token: "vuex的token",
 },
 mutations: {
 setToken(state, val) {
  state.token = val;
 }
 }
})

export default store

mapMutations 輔助函數(shù),和state一樣,可以別名, ==注意:== 輔助函數(shù)注入在methods中

 methods: {
  ...mapMutations([
   'setToken'
  ])
 }
 
 <!--使用-->
 this.setToken(100); //token修改為100

Mutation 必須是同步函數(shù),不要誤解這句話,以為異步不能用,異步可以用在里面,視圖的渲染,取值都沒有問題,問題在于:調(diào)試的時(shí)候,一些瀏覽器調(diào)試插件不能正確監(jiān)聽state。所以方便調(diào)試,盡量將異步寫入action中

Action篇

注意action的 參數(shù)不是 state ,而是context,context里面包含commit,state?;静僮鳎簍his.$store.dispatch("函數(shù)名","值")

const store = new Vuex.Store({
 state: {
  count: 0
 },
 mutations: {
  increment (state) {
   state.count++
  }
 },
 actions: {
  increment (context) {
   context.commit('increment')
  }
 }
})

<!--輔助函數(shù)操作 注入在methods中-->
import { mapActions } from 'vuex'

export default {
 methods: {
  ...mapActions([
    "increment"
  ])
 }
}

<!--使用-->
this.increment(123);

module篇

module 目的將store按功能拆分成多個(gè)文件,利于維護(hù)管理,module 分為2種情況,1.是有命名空間, 2.是沒有命名空間

沒有命名空間: action、mutation 和 getter 是注冊(cè)在全局的,所以要注意,方法函數(shù)不要設(shè)置同名了,如果同名了會(huì)都執(zhí)行。
stete例外是局部。

import Vue from 'vue';
import Vuex from 'vuex';
import moduleA from "./modules/cat.js";
Vue.use(Vuex);
const store = new Vuex.Store({
 state: {
 token: "vuex的token",
 },
 modules:{
 moduleA
 }
})

export default store;

<!--moduleA.js-->
export default {
 // namespaced: true,
 state: {
  cat:"我是cat",
 },
 mutations: { 
 setCat(state, val) {
  state.cat = val;
 } 
 },
 actions: { 
   
 },
 getters: { 
   
 }
};

無命名空間 取值

this.$store.state.moduleA.cat
或者
...mapState({
 cat:state=>state.moduleA.cat,
}),

不可以(state是局部,不可以這么取):
...mapState([
  "cat"
]),

無命名空間 改變值

和原來一樣,因?yàn)榉椒ㄊ亲?cè)在全局的
this.$store.commit("setCat",666);
或者
...mapMutations([
 "setCat"
])

有命名空間: state, action、mutation 和 getter 是局部的,模塊間命名互相不沖突,可以重名。
namespaced 設(shè)置為true,即可開啟

<!--moduleA.js 文件-->
export default {
 namespaced: true,
 state: {
  cat:"我是cat",
 }
}

有命名空間取值

this.$store.state.moduleA.cat

或者
<!--注意這里:命名空間的名字帶上,在modules注冊(cè)時(shí)候呢個(gè)key值-->
<!--也可以別名,方法和之前一樣,就是第一個(gè)參數(shù)是空間名-->
...mapState("moduleA",[
  "cat"
])

有命名空間 改變值

<!--只是第一個(gè)參數(shù)是空間名,其他操作一樣-->
...mapMutations("moduleA",[
 "setCat"
])
this.setCat(888);

或者:

this.$store.commit("moduleA/setCat",666);

最后 plugins

vuex頁(yè)面刷新會(huì)丟失數(shù)據(jù),用vuex-persistedstate插件可解決

import createPersistedState from "vuex-persistedstate";

const store = new Vuex.Store({
 state: {},
 mutations: {},
 actions: {},
 getters: {},
 modules:{},
  plugins: [
    createPersistedState({
      storage: window.sessionStorage
    })
  ]
})

export default store

到此這篇關(guān)于寫給新手同學(xué)的vuex快速上手指北小結(jié)的文章就介紹到這了,更多相關(guān)vuex快速上手內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • Vue全局注冊(cè)中的kebab-case和PascalCase用法

    Vue全局注冊(cè)中的kebab-case和PascalCase用法

    這篇文章主要介紹了Vue全局注冊(cè)中的kebab-case和PascalCase用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Ant Design Vue Pro靜態(tài)路由如何改為動(dòng)態(tài)路由

    Ant Design Vue Pro靜態(tài)路由如何改為動(dòng)態(tài)路由

    這篇文章主要介紹了Ant Design Vue Pro靜態(tài)路由如何改為動(dòng)態(tài)路由問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue使用mixins優(yōu)化組件

    vue使用mixins優(yōu)化組件

    這篇文章主要介紹了vue如何使用mixins優(yōu)化組件,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • 超簡(jiǎn)單的Vue.js環(huán)境搭建教程

    超簡(jiǎn)單的Vue.js環(huán)境搭建教程

    這篇文章主要為大家分享了一份超簡(jiǎn)單的Vue.js環(huán)境搭建教程,幫助大家快速搭建vue環(huán)境,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • vue添加自定義右鍵菜單的完整實(shí)例

    vue添加自定義右鍵菜單的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于vue添加自定義右鍵菜單的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • vue基礎(chǔ)之data存儲(chǔ)數(shù)據(jù)及v-for循環(huán)用法示例

    vue基礎(chǔ)之data存儲(chǔ)數(shù)據(jù)及v-for循環(huán)用法示例

    這篇文章主要介紹了vue基礎(chǔ)之data存儲(chǔ)數(shù)據(jù)及v-for循環(huán)用法,結(jié)合實(shí)例形式分析了vue.js使用data存儲(chǔ)數(shù)據(jù)、讀取數(shù)據(jù)及v-for遍歷數(shù)據(jù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Ant?Design-vue?解決input前后空格問題(推薦)

    Ant?Design-vue?解決input前后空格問題(推薦)

    最近做項(xiàng)目遇到這樣一個(gè)問題輸入框不允許有前后空格但字符中間可以有空格,怎么解決這個(gè)問題呢,接下來小編把a(bǔ)nt?Design-vue?解決input前后空格問題的實(shí)現(xiàn)代碼分享給大家,感興趣的朋友一起看看吧
    2022-10-10
  • Vue項(xiàng)目打包部署總結(jié)篇

    Vue項(xiàng)目打包部署總結(jié)篇

    這篇文章主要介紹了Vue項(xiàng)目打包部署總結(jié)篇,關(guān)于Vue項(xiàng)目發(fā)布的相關(guān)問題就先總結(jié)這么多,幾乎在每一步都踩過坑才有所體會(huì),有問題歡迎各位同學(xué)一起探討,需要的朋友可以參考下
    2024-08-08
  • Vue中子組件向父組件傳值以及.sync修飾符詳析

    Vue中子組件向父組件傳值以及.sync修飾符詳析

    .sync?修飾符所提供的功能,當(dāng)一個(gè)子組件改變了一個(gè)prop的值時(shí),這個(gè)變化也會(huì)同步到父組件中所綁定,下面這篇文章主要給大家介紹了關(guān)于Vue中子組件向父組件傳值以及.sync修飾符的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • vue更多篩選項(xiàng)小組件使用詳解

    vue更多篩選項(xiàng)小組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了vue更多篩選項(xiàng)小組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評(píng)論