Vuex使用一文搞懂

什么是Vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

Vuex 是什么? | Vuex (vuejs.org) 图片来源,vuex官方文档

vuex安装

复制代码
npm install vuex@next --save

安装完成后新建目录store 目录下新建index.js文件
核心概念:

vuex 相当于全局的参数配置,其中的参数可以在每个页面调用,相当于数据库。

state 参数都放在state中,相当于 data(){}

getters 获取state中参数的值

mutations 设置(修改)state中参数的值(同步)

actions异步修改state中参数的值

modules 数据过多过大,防止store过于臃肿用来分割模块,每个模块有独立的state,getters,mutations:,actions。

要点:

只有mutations 可以修改/设置 state 中参数值,异步的 actions 也是通过上下文context.commit() 来通过 mutations 去修改state中的参数

javascript 复制代码
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {},
  getters: {},
  mutations: {},
  actions: {},
  modules: {}
})

在全局配置文件main.js中引入vuex

javascript 复制代码
import store from './store'


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

同步

更改值通过 commit

页面拿值通过

this.$store.getters.getToken

this.$store.state.token

javascript 复制代码
    state: {
        token: ''
    },
    getters: {
        getToken(state) {
            return state.token;
        }
    },
    mutations: {
        upToken(state, val) {
            state.token = val;
        }
    },
javascript 复制代码
 // 同步更改值
 this.$store.commit('upToken',r)
 // 拿到state 参数
 alert(this.$store.getters.getToken)
html 复制代码
<template>
  <div>{{ token }}</div>

</template>

<script>
export default {
  name: "MainView",
// 通过计算属性拿到 参数
  computed: {

    token() {
      return this.$store.state.token
    }

  }
}

异步

更改通过 dispatch

异步只能通过 getters来拿值

this.$store.getters.getToken

javascript 复制代码
    state: {
        token: ''
    },
    getters: {
        getToken(state) {
            return state.token;
        }
    },
    mutations: {
        upToken(state, val) {
            state.token = val;
        }
    },
    actions: {
        asycUpToken(context, val) {
            context.commit('upToken', val);
        }
    },
javascript 复制代码
// 更改 state 参数
this.$store.dispatch('asycUpToken',r)

浏览器刷新vuex参数消失解决办法

vuex现在存储数据只是在页面中,全局变量,刷新页面后参数会恢复到初始状态

思路存sessionStronger,通过vue生命周期监听,第一次存入,监听到刷新将存入数据在给state

赶工中。。。。

相关推荐
AI_paid_community10 分钟前
用 Claude Code 写了一年代码,装了这 18 个 Skills 之后,我才知道自己一直在"氛围编程"
javascript·面试
parade岁月14 分钟前
开源一个 Vue 3 Table:API 学 antdv、主题学 Nuxt UI
前端·vue.js
JiaWen技术圈18 分钟前
Web 安全深入审计检查清单
前端·安全
江米小枣tonylua27 分钟前
从红绿灯到方向盘:TDD 在 AI 时代的新角色
前端·设计模式·ai编程
祀爱28 分钟前
Asp.net core+ Layui 项目中编辑按钮传递数据的方法
前端·c#·asp.net·layui
DanCheOo1 小时前
Prompt 工程化管理:从散落在代码里到版本化、可测试、可回滚
前端·ai编程
涛涛ing1 小时前
Vue 3.5 下一站:cached 提案,重新定义响应式缓存
前端
胖子不胖1 小时前
svg之viewBox
前端
隔壁老王11111 小时前
浅谈JavaScript内存管理
javascript
吹牛不交税1 小时前
tree-transfer-vue3 前端插件安装问题解决(--legacy-peer-deps)(其他插件可考虑)适用
前端·javascript·vue.js