最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

VueX如何實(shí)現(xiàn)數(shù)據(jù)共享

 更新時(shí)間:2024年08月31日 10:51:56   作者:SixCandy  
這篇文章主要介紹了VueX如何實(shí)現(xiàn)數(shù)據(jù)共享問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1 VueX

1.1 VueX概述

回顧組件之間共享數(shù)據(jù)的方式:

VueX是實(shí)現(xiàn)組件數(shù)據(jù)(狀態(tài))管理的一種機(jī)制,可以方便的實(shí)現(xiàn)組件之間數(shù)據(jù)共享。

使用VueX的好處:

  • 集中管理共享數(shù)據(jù),易于開發(fā)和后期維護(hù)
  • 高效實(shí)現(xiàn)組件的數(shù)據(jù)共享,提高開發(fā)效率
  • 存在VueX中的數(shù)據(jù)都是響應(yīng)式的,能夠?qū)崟r(shí)保持?jǐn)?shù)據(jù)與頁(yè)面的同步

1.2 VueX的基本使用

  • 安裝vuex依賴包
npm i vuex --save
  • 導(dǎo)入vuex包
import Vuex from 'vuex'
Vue.use(Vuex)
  • 創(chuàng)建store對(duì)象
const store = new Vuex.Store({
  //state中存放的就是全局共享數(shù)據(jù)
  state:{count:0}
})
  • 將store對(duì)象掛載到vue中
new Vue ({
  el:'#app',
  render: h=>h(app),
  router,
  //將創(chuàng)建的共享數(shù)據(jù)對(duì)象,掛載到vue實(shí)例中,所有組件就可以直接從store中獲取全局的數(shù)據(jù)了
  store
})

1.3 VueX的核心概念

  • 1.3.1 State

State提供唯一的公共數(shù)據(jù)源,所有共享的數(shù)據(jù)都要統(tǒng)一放到Store的state中

組件訪問(wèn)的state中數(shù)據(jù)的第一種方式:

this.$store.state.全局?jǐn)?shù)據(jù)名稱

組件訪問(wèn)的state中數(shù)據(jù)的第二種方式:

//從vuex中導(dǎo)入mapState函數(shù)
import {mapState} from 'vuex'

注釋:通過(guò)導(dǎo)入的mapState函數(shù),將當(dāng)前組件需要的全局?jǐn)?shù)據(jù),映射為當(dāng)前組件的computed計(jì)算屬性:

//例如:
computed:{
   ...mapState(['count'])
}
  • 1.3.2 Mutation

Mutation用于變更Store的數(shù)據(jù)

觸發(fā) mutation的第一種方式:this.$store.commit()函數(shù)

實(shí)例代碼:

 mutations: {
   add(state){
     //變更狀態(tài)
     state.count++
   }
 },
<template>
 <div>
     <h3>當(dāng)前最新的count值:{{this.$store.state.count}}</h3>
     <button @click="handle1">+1</button>
 </div>
</template>

<script>
export default {
   data(){
       return{};
   },
   methods:{
       //觸發(fā)mutation
      handle1(){
           this.$store.commit('add')
      }
   }
}
</script>

mutation時(shí)傳遞參數(shù):

 mutations: {
   addN(state,step){
     //變更狀態(tài)
     state.count += step
   }
 },
handle2(){
 this.$store.commit('addN',2)
}

觸發(fā)mutation的第二種方式:

mutations: {
   sub(state){
      state.count--
   },
   subN(state,step){
     state.count -= step
  },
 },
<template>
 <div>
     <h3>當(dāng)前最新的count值:{{count}}</h3>
     <button @click="handlersub">-1</button>
     <button @click="handlesub2">-2</button>
 </div>
</template>
<script>
import { mapState ,mapMutations} from 'vuex';
export default {
   computed:{
       ...mapState(['count'])
   },
   methods:{
       ...mapMutations(['sub','subN']),
       handlersub(){
           this.sub()
       },
       handlesub2(){
           this.subN(2)
       }
   }
}
</script>

  • 1.3.3 Action

Action用于處理異步任務(wù)

在actions中不能直接修改state中的數(shù)據(jù),必須通過(guò)context.commit觸發(fā)某個(gè)mutations中的函數(shù)

觸發(fā)actions的第一種方式:

this.$store.dispatch()

actions中攜帶參數(shù):

 //context是默認(rèn)參數(shù)
addNdely(context,step){
  setTimeout(()=>{
    context.commit('addN',step)
  },1000)
}

觸發(fā)actions的第二種方式:

import {mapActions} from 'vuex';
export default {
    methods:{
        //觸發(fā)actions
         ...mapActions(['addNdely']),    
    }
}
  • 1.3.4 Getter

Getter用于對(duì)store中的數(shù)據(jù)進(jìn)行加工處理形成新的數(shù)據(jù)

使用getters的第一種方式:

this.$store.getters.函數(shù)名稱

使用getters的第二種方式:

import {mapGetters} from 'vuex';
export default {
   computed:{
     ...mapGetters(['showNum'])
   },
}

store.js:

import { setTimeout } from 'core-js'
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count:0
  },
  getters: {
    //這是一個(gè)函數(shù)
    showNum:state =>{
       return '最新count:'+state.count
    }
  },
  mutations: {
    add(state){
      //變更狀態(tài)
      state.count++
    },
    addN(state,step){
      //變更狀態(tài)
      state.count += step
    },
    sub(state){
       state.count--
    },
    subN(state,step){
      state.count -= step
   },
  },
  actions: {
    //context是默認(rèn)參數(shù)
    addNdely(context,step){
         setTimeout(()=>{
            context.commit('addN',step)
         },1000)
    }
  },
  modules: {
  }
})

Addi.vue:

<template>
  <div>
      <h3>當(dāng)前最新的count值:{{this.$store.state.count}}</h3>
      <!-- <h4>getters:{{$store.getters.showNum}}</h4> -->
      <h4>getters:{{showNum}}</h4>
      <button @click="handle1">+1</button>
      <button @click="handle3">+2</button>
      <button @click="addNdely">+dely</button>
  </div>
</template>
<script>
import { mapMutations,mapActions,mapGetters} from 'vuex';
export default {
    computed:{
      ...mapGetters(['showNum'])
    },
    methods:{
        //觸發(fā)mutation
         ...mapMutations(['add','addN']),
         ...mapActions(['addNdely']),
       handle1(){
            this.add()
       },
       handle2(){
            this.$store.commit('addN',2)
       },
       handle3(){
           this.$store.dispatch('addNdely',2)
       }
      
    }
}
</script>

Sub.vue:

<template>
  <div>
      <h3>當(dāng)前最新的count值:{{count}}</h3>
      <button @click="handlersub">-1</button>
      <button @click="handlesub2">-2</button>
  </div>
</template>
<script>
import { mapState ,mapMutations} from 'vuex';
export default {
    computed:{
        ...mapState(['count'])
    },
    methods:{
        ...mapMutations(['sub','subN']),
        handlersub(){
            this.sub()
        },
        handlesub2(){
            this.subN(2)
        }
    }
}
</script>

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3.2中的vuex使用詳解

    vue3.2中的vuex使用詳解

    這篇文章主要介紹了vue3.2中的vuex使用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • vue.js—定義全局變量、函數(shù)的方式

    vue.js—定義全局變量、函數(shù)的方式

    這篇文章主要介紹了vue.js—定義全局變量、函數(shù)的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Element?Plus?表格表單校驗(yàn)功能實(shí)現(xiàn)原理

    Element?Plus?表格表單校驗(yàn)功能實(shí)現(xiàn)原理

    本文檔講解基于Element?Plus的可編輯表格表單校驗(yàn)功能的實(shí)現(xiàn),重點(diǎn)說(shuō)明樣式配置對(duì)校驗(yàn)錯(cuò)誤信息顯示的關(guān)鍵作用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-09-09
  • vue 之 css module的使用方法

    vue 之 css module的使用方法

    這篇文章主要介紹了vue 之 css module的使用方法,css module目的為所有類名重新生成類名,有效避開了css權(quán)重和類名重復(fù)的問(wèn)題,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-12-12
  • vue3封裝el-pagination分頁(yè)組件的完整代碼

    vue3封裝el-pagination分頁(yè)組件的完整代碼

    這篇文章主要介紹了vue3封裝el-pagination分頁(yè)組件的完整代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Vue.js2.0中的變化小結(jié)

    Vue.js2.0中的變化小結(jié)

    最近小編在學(xué)習(xí)vue.js ,發(fā)現(xiàn)里面有好多好玩的東東,今天小編給大家分享Vue.js2.0中的變化,小編會(huì)在日后給大家持續(xù)更新的,感興趣的朋友參考下吧
    2017-10-10
  • 利用Vue.js實(shí)現(xiàn)求職在線之職位查詢功能

    利用Vue.js實(shí)現(xiàn)求職在線之職位查詢功能

    Vue.js是當(dāng)下很火的一個(gè)JavaScript MVVM庫(kù),它是以數(shù)據(jù)驅(qū)動(dòng)和組件化的思想構(gòu)建的。下面這篇文章主要給大家介紹了關(guān)于利用Vue.js實(shí)現(xiàn)求職在線之職位查詢功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • vue-for循環(huán)嵌套操作示例

    vue-for循環(huán)嵌套操作示例

    這篇文章主要介紹了vue-for循環(huán)嵌套操作,結(jié)合實(shí)例形式分析了vue.js使用for循環(huán)嵌套讀取數(shù)據(jù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Vue使用Pinia輕松實(shí)現(xiàn)狀態(tài)管理

    Vue使用Pinia輕松實(shí)現(xiàn)狀態(tài)管理

    pinia,一個(gè)基于Vue3的狀態(tài)管理庫(kù),它可以幫助開發(fā)人員管理Vue應(yīng)用程序的狀態(tài),本文主要為大家介紹了Pinia的用法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • Vue自定義指令生命周期鉤子的完全指南

    Vue自定義指令生命周期鉤子的完全指南

    Vue?自定義指令提供了強(qiáng)大的生命周期鉤子,讓你可以精準(zhǔn)控制指令在?DOM?元素上的行為,本文將深入解析所有鉤子函數(shù),并提供豐富的實(shí)用示例,感興趣的小伙伴可以了解下
    2026-01-01

最新評(píng)論

高阳县| 南岸区| 凤山县| 河津市| 湟中县| 东城区| 霍林郭勒市| 鄂托克旗| 龙州县| 鄂州市| 廉江市| 红桥区| 张家港市| 万年县| 安庆市| 启东市| 土默特左旗| 化隆| 成安县| 同德县| 浦县| 兖州市| 宜阳县| 开化县| 浑源县| 卓尼县| 临颍县| 麻江县| 沙洋县| 成都市| 涿鹿县| 武威市| 荣成市| 黄梅县| 邢台县| 大丰市| 深圳市| 旬邑县| 临朐县| 灵宝市| 英山县|