Vuex插件的安装与使用原理

Vuex插件的安装与使用原理

Vuex安装和环境搭建

安装Vuex

  • 第一步:打开CMD窗口,通过命令转到Vue的安装路径
  • 第二步:输入安装Vuex的命令
    • vue2 安装 Vuex3 版本:npm i vuex@3
    • vue3 安装 Vuex4 版本:npm i vuex@4
  • 当在CMD窗口末尾中出现added 1 package in 2m,表示安装完成

Vuex环境搭建

  • 第一步:在Vue文件路径下新建文件夹vuex,并在vuex(新建的文件夹)下创建store.js文件
    • 创建的store.js很重要,创建的文件名决定了之后的调用写法
  • 第二步:在store.js文件中输入以下代码
javascript 复制代码
// 引入Vue
import Vue from 'vue'
// 引入插件
import Vuex from 'vuex'

// 使用插件
Vue.use(Vuex)

// 负责执行行为的对象
const actions = {}
// 负责更新的对象
const mutations = {}
// 负责数据状态
const state = {}
// 负责接收state对象
const getters = {}

export default new Vuex.Store({
    actions,
    mutations,
    state,
    getters
})
  • 第三步:在main.vue文件中引入store.js文件
javascript 复制代码
import store from './vuex/store'

new Vue({
  el : '#app',
  // 不要忘记这里也要添加
  store,
  render: h => h(App),
})

Vuex使用原理

  • 原理:实现数据实时共享


actions(负责执行业务的对象)

  • 注意:以下的context和value并不是一定要写的,当你的业务简单(简单到可以只做一点代码就能完成要求,也不需要更新数据)或者可以跳过这个业务时,可以选择不写,直接通过this.$store.commit('mutations的方法名', value)转到mutations
javascript 复制代码
// xxx.vue
methods : {
    方法名(){
        this.$store.dispatch('actions方法名', 值)
    }
}

// 负责执行业务的对象
const actions = {
    方法名(context, value){
        ......对value执行的业务
        context.commit('这里写mutations的方法名', value)
    }
}
  • context:上下文,将所在方法的值(value)传到下一个(mutations)方法中
  • value:值,actions的值接收的是从xxx.vue文件中的this.$store.dispatch('actions方法名', 值)传过来的数据

mutations(负责更新数据的对象)

  • 对于actions和mutations中的方法名可以在命名时进行区分(一点小建议,当然两个写的一样也没关系)
    • 如actions中的方法名可以按照驼峰式的写法'saveUsername'
    • 而mutations的方法名可以按照全大写叫下划线分隔'SAVE_USERNAME'

传给mutations值的方法分两种:

  • 第一种:通过this.$store.dispatch('actions方法名', 值),将数据传给actions,再通过context.commit('mutations方法名', value)传给mutations方法名中。
javascript 复制代码
// xxx.vue
methods : {
    方法名(){
        this.$store.dispatch('actions方法名', 值)
    }
}

// 负责执行业务的对象
const actions = {
    方法名(context, value){
        ......对value执行的业务
        context.commit('这里写mutations的方法名', value)
    }
}

// 负责更新数据的对象
const mutations = {
    方法名(state, value){
        ......
    }
}
  • 第二种:通过this.$store.commit('mutations方法名', 值),将数据不经过actions的方式,直接传给mutations对象中。
    • 注意:这种只能在没有需要执行业务的情况下进行。
javascript 复制代码
// xxx.vue
methods : {
    方法名(){
        this.$store.commit('actions方法名', 值)
    }
}

// 负责更新数据的对象
// mutations中的对象名,要和actions中的context.commit('mutations中的方法名')一致
const mutations = {
    方法名(state, value){
        ......
    }
}
  • state:数据,接收actions对象中处理好的数据
  • value:值,更新到state的值

state(存放数据的对象,可以看做Vue的data)

  • 所有的数据存放的位置都从这里获取
javascript 复制代码
// 负责数据状态
const state = {
    xxx : '',
    xxx : [
        {id:xxx, name:xxx, age:xxx},
        {id:xxx, name:xxx, age:xxx},
        {id:xxx, name:xxx, age:xxx}
    ]
}

getters(自动接收state对象,可以看做Vue的computed)

javascript 复制代码
// xxx.vue
<template>
    <div>
        <h1>{{$store.getters.对象名}}</h1>
    </div>
</template>

// 自动接收state对象,可对数据进行额外操作,产生不同的效果
// 效果:反转、去除空白行、转大小写 等等
const getters = {
    方法名(state){
        return ......
    }
}
相关推荐
ShineWinsu4 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
szp20058 小时前
Cache API 会丢掉 URL 里的 #:我的 9 个模型分块一直写在同一条缓存上
javascript·浏览器
高晶8 小时前
Android 通讯录应用开发实战:从零搭建 SQLite 数据持久化完整项目
android·设计模式·前端框架
keyipatience8 小时前
TypeScript学习(1)
前端·javascript·学习·typescript·html·css3
xifangge20259 小时前
基于 JavaScript 实现 CNC 数控切削参数与螺纹公差纯前端核算引擎
开发语言·前端·javascript
honkun69 小时前
vue 表格组件 vxe-table 修改滚动条样式,修改滚动条样式,统一宽度、颜色与自动隐藏
前端·javascript·vue.js
FRing0310 小时前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式
大明二代11 小时前
从 RAG 到有记忆的 Agent:Mastra Memory 与 PostgreSQL 实战
前端·javascript·人工智能
小羊没烦恼!11 小时前
C#综合揭秘——Entity Framework 并发处理详解
java·开发语言·前端·javascript·数据库·mysql·c#
OpsEye12 小时前
模型能力波动怎么办?网关侧做模型质量监控与自动切换
javascript·ai编程