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

赶工中。。。。

相关推荐
秋天的一阵风8 分钟前
✨ 代码秒跳转、自动补全?全靠 LSP 和 AST!
前端·后端·ai编程
程序员小淞20 分钟前
写一个行政区划下拉选组件(异步+搜索)
前端
星栈21 分钟前
用 Rust + Makepad 做一个 JSON 查看器:从零到能用的全过程
前端·rust
yijianace22 分钟前
Python爬虫实战:分页爬取 + 详情页采集 + CSV存储
前端·爬虫·python
十九画生23 分钟前
从同步到异步:重新理解 JavaScript 的执行机制
javascript
想吃火锅100526 分钟前
【前端手撕】防抖节流
前端
半个落月26 分钟前
JavaScript 同步异步与 Promise 详解 —— 从 Event Loop 到手写 sleep
javascript
MemoriKu26 分钟前
Flutter 相册 APP 视频模态稳定化实战:从视频抽帧、Embedding 元数据到 Android 真机启动修复
android·开发语言·前端·flutter·架构·音视频·embedding
触底反弹30 分钟前
深入理解 JavaScript 同步与异步:从 Event Loop 到 async/await
javascript
lichenyang45331 分钟前
ArkUI 票根卡片:PathShape 真挖洞,shadow 沿凹陷外发光
前端