vuex状态管理

一、安装vuex(npm i vuex),创建store.js

import Vue from ‘vue‘
import Vuex from ‘vuex‘
import state from ‘./state‘
import getters from ‘./getters‘
import actions from ‘./actions‘
import mutations from ‘./mutations‘

Vue.use(Vuex)

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

二、在main.js引入store.js,注册

import Vue from ‘vue‘
import App from ‘./App.vue‘
import router from ‘./router‘
import store from ‘./store‘

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

三、state的用法
state.js

const state = {
    appName: ‘admin‘
}
export default state

1.直接获取store的state

 computed: {
    appName () {
      return this.$store.state.appName;
    }
  }

2.在mapState中定义别名

computed: {
    ...mapState({
      appName: state => state.appName
    })
  }

3.从mapSate获取

computed: {
    ...mapState([‘appName‘])
  }

四、getter 获取计算后的 state
getters.js

const getters = {
    appNameWithVersion (state) {
        return `${state.appName}v2.0`
    }
}
export default getters

1.从store里获取getter

computed: {
    appNameWithVersion () {
      return this.$store.getters.appNameWithVersion;
    }
  }

2.从mapGetters中获取

computed: {
    ...mapGetters([‘appNameWithVersion‘])
  }

五、mutations修改state
mutations.js

const mutations = {
    setAppName (state, params) {
        state.appName = params
    }
}
export default mutations

1.用store的commit触发mutations

methods: {
    updateAppName () {
      this.$store.commit(‘setAppName‘, ‘admin2‘)
    }
  }

2.使用mapMutations

methods: {
    ...mapMutations([‘setAppName‘]),
    updateAppName () {
      this.setAppName(‘admin2‘);
    }
  }

六、actions异步修改state
actions.js

const actions = {
    setName (state, name) {
        setTimeout(() => {
            state.commit(‘setAppName‘, name)
        }, 2000)
    }
}
export default actions

1.使用dispatch触发actions

methods: {
    updateAppName () {
      this.$store.dispatch(‘setName‘, ‘admin3‘)
    }
  }    

2.使用mapActions

methods: {
    ...mapActions([‘setName‘]),
    updateAppName () {
      this.setName(‘admin3‘)
    }
  }

参考:https://blog.csdn.net/m0_37068028/article/details/79860553

原文地址:https://www.cnblogs.com/bear-blogs/p/10164087.html

时间: 2024-11-06 11:29:21

vuex状态管理的相关文章

vue组件化开发-vuex状态管理库

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试.状态快照导入导出等高级调试功能. 以上是vuex的官方文档对vuex的介绍,官方文档对vuex的用法进行了详细的说明.这里就不再细讲vuex的各个用法,写这篇博客的目的只是帮助部分同学更快地理解并上手vuex.

vue从入门到进阶:Vuex状态管理(十)

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 在 Vue 之后引入 vuex 会进行自动安装: <script src="/path/to/vue.js"></script> <script src="/path/to/vuex.js"></script> 可以通过 https://unpkg.com/[em

应用四:Vue之VUEX状态管理

概念:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 应用场景:Vue多个组件之间需要共享数据或状态. Vuex有几个核心概念:State.Getter.Mutation.Action.Module. State:存储状态数据 Getter:从状态数据派生数据,相当于State的计算属性. Mutation:存储用于同步更改状态数据的方法,默认传入的参数为state. Action:存储

四:Vue之VUEX状态管理

(注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的) 概念:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 应用场景:Vue多个组件之间需要共享数据或状态. Vuex有几个核心概念:State.Getter.Mutation.Action.Module. State:存储状态数据 Getter:从状态数据派生数据,相当于State的计

Vuex状态管理详解

什么是Vuex Vuex的作用(什么样的情况下使用Vuex) 状态的分类 使用事件来改变兄弟组件之间的数据状态示例 使用Vuex 安装vuex模块 作为插件使用 定义一个容器 注入根实例 简易计算器实例分析Vuex流程

vuex状态管理2

在vuex的官网https://vuex.vuejs.org中,提到的核心概念一共有5个,分别是State.Getter.Mutation.Action和Module,在上一篇随笔中,我们主要用到其中的State和Mutation,接下来,我们来分析剩下几个使用方法,在这里,是在上一篇的基础上面完成的. 这是上一篇结束时实现的功能,现在接着这个项目继续分析. Getter 在官网中对getter的定义是:就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改

Vue学习日记(四)——Vue状态管理vuex

前言 先说句前话,如果不是接触大型项目,不需要有多个子页面,不使用vuex也是完全可以的. 说实在话,我在阅读vuex文档的时候,也很难以去理解vuex,甚至觉得没有使用它我也可以.但是直到我在项目碰到下面这些问题: 当路由切换的时候,原本路由的数据太多,传递过去太麻烦. 有些数据是多个路由需要用到的,那我就需要从后台获取多次数据 当然,这些问题都可以解决,就是在实例化vue对象的时候,就将这些数据绑定在window对象上面.但是我们也不得不设想: 万一数据太多了,那么可阅读性是不是会下降 如果

结合项目学习vue2(路由vue-router,状态管理vuex)

前期: index.html <div id="app"> <h1>{{intro}}</h1> <router-view></router-view> </div> app.js var App = new Vue({ router,//router:router的缩写 //传一个路由属性给 Vue 实例,路由现在被定义为一个在 router 实例里的一个routes 选项数组 data: { intro: &q

vuex:一篇看懂vuejs的状态管理神器

关于vuex类的新闻最近很多,看到眼热就去查了下资料,然后扯出来一堆flux.redux.state.state之类的概念,以及大型工程必要性之类的.看官方手册也是昏昏然. 然而,我还是弄懂了!我准备从demo出发,以同样的一个最简单的demo,演示两种情况下的代码编写情况: 单纯依赖于vue.js 依赖vue.js,也使用了vuex技术 目的是通过对比引出vuex的概念.优势和劣势.也许这是目前最接地气的vuex的介绍吧:).所以无论如何在了解vuex之前,你必须懂得vue.js(好像废话:)