vuex

Vuex

是一个专为 Vue.js 应用程序开发的状态管理模式,采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,vuex可以帮助我们管理共享状态,适合开发大型单页应用

Vue Components 发出(Dispath)一个Actions commit(提交)到Mutations发出Mutate改变状态State再重新渲染(Render)Vue Components

安装vuex

npm install vuex

在mian.js中引入vue

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

每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)

getter

Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。就像computed一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

Mutation

mutations是唯一一个可以更改state的地方,同时必须同步修改数据

mutations: {
    //可以向store.commit提供额外的参数,即载荷payload
    increment (state, n=1) {
        state.count += n
    }
}
methods: {
    CountIncrement() {
        this.$store.commit('increment')
    }
}

可以写成对象,这样可以包含多个字段并且mutation会更容易读

mutations: {
    increment (state, payload) {
        state.count += payload.amount
    }
}
store.commit('increment',{
    amount: 10
})

mapState辅助函数

import {
    mapState
}from 'vuex'
export default {
    computed () {
        //使用对象展开运算符将此对象混入到外部对象中
        ...mapState({
            
        })
    }
}

使用常量替代 Mutation 事件类型

可以把这些常量放在单独的文件中可以让整个app的mutation一目了然

新建文件mutationType.js

export const SOME_MUTATION = 'SOME_MUTATION'

Action

可以做异步操作

store.dispatch('increment')

actions: {
    incrementAsync({ commit }) {
        setTimeout(() => {
            commit('increment')
        },1000)
    }
}

开发环境严格模式

  strict: process.env.NODE_ENV !== 'production'

全局混入

全局注册一个混入,影响注册之后所有创建的每个 Vue 实例。

//mutation.js中定义
Vue.mixin({
  filters: {
    num100 (value) {
      if (!Number.isInteger(value)) {
        return value
      } else {
        return value > 99 ? '99+' : value
      }
    }
 })
//在需要的页面中引入
import { mapMutations } from 'vuex'

<span class="circle" v-if="item.path === '/cart'">{{totalCartCount | num100}}</span> 
//使用竖线分隔
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装 npm npm install vuex --save 在一个模块化的打包系统中,您必须显式地通过Vue.u...
    萧玄辞阅读 2,972评论 0 7
  • Vuex是什么? Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件...
    萧玄辞阅读 3,162评论 0 6
  • vuex是一个状态管理模式,通过用户的actions触发事件,然后通过mutations去更改数据(你也可以说状态...
    Ming_Hu阅读 2,042评论 3 3
  • vuex 场景重现:一个用户在注册页面注册了手机号码,跳转到登录页面也想拿到这个手机号码,你可以通过vue的组件化...
    sunny519111阅读 8,051评论 4 111
  • ### store 1. Vue 组件中获得 Vuex 状态 ```js //方式一 全局引入单例类 // 创建一...
    芸豆_6a86阅读 744评论 0 3