美文网首页
Vuex是什么?如何使用

Vuex是什么?如何使用

作者: 夏日冰红茶 | 来源:发表于2024-03-16 22:28 被阅读0次

Vuex:是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据共享。
(1) 如果是Vue2的环境,不能使用vuex4的版本,所以我们需要安装vuex3以下的版本安装。

  创建项目:vue create vue2
  访问vue2目录:cd vue2
  启动脚手架:npm或yarn serve
  安装vuex:由于vue2不能使用vuex4的版本,所以在安装时需要指定版本3,npm i vuex@3
            
  配置vuex:
   步骤一:新建文件夹store,文件夹下新建index.js文件
   步骤二:index.js中完成配置:还没有配置数据和事件

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

// 用来存储数据
const state = {
count:0
}
// 响应组件中的事件
const actions = { }

// 操作数据
const mutations = { }

// 用来将state数据进行加工
const getters = { }

// 新建并暴露store
export default new Vuex.Store({
state,
actions,
mutations,
getters
})

步骤三:main.js中引入

import Vue from 'vue'
import App from './App.vue'
import store from './store/index';

Vue.config.productionTip = false

new Vue({
render: h => h(App),
store}).$mount('#app')

(2)如果是Vue3的环境,使用vuex4的版本。 npm install vuex@next

     配置vuex:      
     步骤一:新建文件夹store,文件夹下新建index.js文件
     步骤二:index.js中完成配置:还没有配置数据和事件
     import { createStore } from 'vuex'
     export default createStore({
          state: {
               //数据存放的位置
               count: 0
        },
mutations: { },
actions: { },
modules: { }

})

步骤三:在main中放入内容

import { createApp } from 'vue'
import App from './App.vue'
import store from './store/index.js';
createApp(App).use(store).mount("#app")

Vuex中的核心概念:
1、state:提供唯一的公共数据源,所有共享的数据都要放到store中的state中。
(1) 组件访问state中的数据的第一种方法:
首先在state中创建变量值count
const state = {
count:0
}
然后再调用的组件中需要变量{{$store.state.count}}

 (2)第二种方法:利用vuex中的mapState方法
 
     首先引入mapState方法:import { mapState } from 'vuex';
     然后在通过刚才导入的mapState函数,将当前组件需要的全局数据,映射为当前组件的computed计算属性,这样在需要count变量的地方这样引用{{count}}就可以了

     computed: {
         ...mapState(['count'])
      }

2、mutations:用于变更store中的数据,我们不能直接操作store中的数据,所以只能在mutations操作。
(1)mutations变更数据的第一种方法
首先mutations中定义函数add,state是固定的传递的值,如下所示:
mutations: {
add(state) {
state.count++;
}
}
也可以传递参数写法如下:

       mutations: {
          add(state, num) {
              state.count+=num;
          }
        }

      然后在需要调用的组件的methods方法中定义函数,用this.$store.commit('add(调用mutations中定义的方法)')
       methods:{
           addData(){
              this.$store.commit('add')
           }
       }

    addData这个方法应用在组件中某个操作上。


   (2)mutations变更数据的第二种方法
       首先在vuex中按需引入mapMutations
       import { mapMutations } from 'vuex';

       通过刚才导入的mapMutations函数,将需要的mapMutations函数,映射为当前组件的methods方法

         methods:{
 ...mapMutations(["plus"])
         },   然后这个plus方法可以直接用在相关的组件上。

3、actions: 异步操作 State中的数据

 (1) actions变更数据的第一种方法,定义异步函数,固定传参context 对象,payload是参数,可以调用 context.commit 提交一个 mutation

      actions: {
         addAsync(context, payload) {
            setTimeout(() => {
               context.commit('add', payload);    
            }, 1000);
          },
       },
      然后在 Vue 组件中,我们可以使用 dispatch 方法触发 Action。并且传递参数
      this.$store.dispatch(' addAsync', 10);

 (2) actions变更数据的第二种方法,还是在需要使用的组件中从vuex按需导入mapActions。
      import { mapActions } from 'vuex';
     通过刚才导入的mapActions函数,将需要的mapActions函数,映射为当前组件的methods方法

      methods:{
          ...mapActions(["plus"]),
      },

4、Getters: 用于将 State中的数据加工处理形成新的数据。类似与vue中的computed属性
(1) getters处理数据的第一种方法
首先定义getters中处理函数的方法如下:
const getters = {
showNum(state) {
return '当前最新的数量是:' + state.count
}
}
然后在使用的组件中直接调用:this.$store.getters.名称

  (2) getters处理数据的第二种方法,还是在需要使用的组件中从vuex按需导入mapGetters。
 
       import { mapGetters } from 'vuex';
       通过刚才导入的mapGetters函数,将需要的mapGetters函数,映射为当前组件的computed方法。
 
         computed: {
            ...mapGetters(['showNum'])
         }

        然后在使用的组件中直接调用:showNum这个名称

相关文章

  • vuex常见面试题

    1.vuex是什么?怎么使用?哪种功能场景使用它? 2.vuex有哪几种属性 3.不使用Vuex会带来什么...

  • vuex状态管理 一

    目录 - 1.什么是vuex? - 2.为什么要使用Vuex? - 3.vuex的核心概念?||如何在组件中去使用...

  • vuex的使用

    同步的vuex提交的流程图: 异步vuex 修改数据的流程 Mutations里面如何传参: Vuex里面如何使用...

  • 初识vuex

    1、使用前需要在项目中安装一下vuex 2、需要了解一下vuex是什么以及vuex提出的几个概念 (1)、vuex...

  • vuex常见面试题

    (答案待更新...) 1.vuex是什么?怎么使用?哪种功能场景使用它? 2.vuex有哪几种属性 3.不使用Vu...

  • vue全家桶(4.2)

    5.2、使用vuex重构上面代码Vuex是什么?官方定义:Vuex 是一个专为 Vue.js 应用程序开发的状态管...

  • (十七)Vue3.x使用provide/inject来代替vue

    本章我们将介绍的是如何在vue3.x中使用provide/inject来代替vuex; 1、前言:在使用vuex的...

  • 2018-12-11-nuxt.j-vuex

    首先使用npm install --save-dev vuex把vuex添加到依赖,接下来就是如何在组件中使用vu...

  • vuex如何使用

    vuex总共分为五个部分 state module mutations actions getters 流程

  • 如何使用VUEX

    1 怎么使用vuex 安装等等 然后下载vuex模板 store文件 里面包含 state.js acti...

网友评论

      本文标题:Vuex是什么?如何使用

      本文链接:https://www.haomeiwen.com/subject/orqozdtx.html