Vuex的基本使用与概念解析

一、什么情况下应该使用 Vuex?

Vuex 可以帮助我们管理共享状态,并附带了更多的概念和框架。这需要对短期和长期效益进行权衡。
如果不打算开发大型单页应用,应用够简单,最好不要使用 Vuex。一个简单的 store 模式就足够了。但是,如果需要构建一个中大型单页应用,就要考虑如何更好地在组件外部管理状态,Vuex 是不错的选择。

二、基本使用

在 Vue 的单页面应用中使用,需要使用Vue.use(Vuex)调用插件。将其注入到Vue根实例中。

import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
   
  state: {
   
    count: 0
  },
  getter: {
   
    doneTodos: (state, getters) => {
   
      return state.todos.filter(todo => todo.done)
    }
  },
  mutations: {
   
    increment (state, payload) {
   
      state.count++
    }
  },
  actions: {
   
    addCount(context) {
   
      // 可以包含异步操作
      // context 是一个与 store 实例具有相同方法和属性的 context 对象
    }
  }
})
// 注入到根实例
new Vue({
   
  render: h => h(App),
  store
}).$mount('#app')

然后改变状态:

this.$store.commit('increment')

三、核心

Vuex 主要有四部分:

1.state:包含了store中存储的各个状态。
2.getter:类似于 Vue 中的计算属性,根据其他 getter 或 state 计算返回值。
3.mutation:一组方法,是改变store中状态的执行者,只能是同步操作。
4.action:一组方法,其中可以包含异步操作。
在这里插入图片描述

1、State:

Vuex 使用 state 来存储应用中需要共享的状态。为了能让 Vue 组件在 state更改后也随着更改,需要基于state 创建计算属性。

// 创建一个 Counter 组件
const Counter = {
   
  template: `<div>{
    { count }}</div>`,
  computed: {
   
    count () {
   
      return this.$store.state.count  // count 为某个状态
    }
  }
}

注意:一般不通过state来直接修改属性,而是通过mutations来修改。

2、Getters

类似于 Vue 中的 计算属性(可以认为是 store 的计算属性),getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

Getters中的方法有两个默认参数:
state 当前VueX对象中的状态对象
getters 当前getters对象,用于将getters下的其他getter拿来用

Getter 方法接受 state 作为其第一个参数:

const store = new Vuex.Store({
   
  state: {
   
    todos: [
      {
    id: 1, text: '...', done: true },
      {
    id: 2, text: '...'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值