Vuex中Store的简单实现

 更新时间:2023年11月13日 10:12:54   作者:mumuwei_l  
这篇文章主要介绍了Vuex中Store的简单实现,为了在 Vue 组件中访问 this.$store property,你需要为 Vue 实例提供创建好的 store,Vuex 提供了一个从根组件向所有子组件,以 store 选项的方式 注入 该 store 的机制,需要的朋友可以参考下

Vuex中Store的简单实现

安装 Vuex 之后,让我们来创建一个 store。

创建过程直截了当——仅需要提供一个初始 state 对象和一些 mutation:

// store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    add(state) {
      state.count++
    }
  }
})

通过 store.state 来获取状态对象,以及通过 store.commit 方法触发状态变更:

store.commit('add')

console.log('store.state.count:' + store.state.count) // -> store.state.count:1

为了在 Vue 组件中访问 this.$store property,你需要为 Vue 实例提供创建好的 store。Vuex 提供了一个从根组件向所有子组件,以 store 选项的方式 注入 该 store 的机制:

// main.js

new Vue({
  el: '#app',
  store
})

现在我们可以从组件的方法提交一个变更,进而修改 state 中的 count 变量值:

methods: {
  add() {
    this.$store.commit('add')
    console.log('state.count' + this.$store.state.count)
  }
}

为什么用 mutation 方式修改 state 中定义的变量,而不是直接修改

  1. 我们通过提交 mutation 的方式,而非直接改变 store.state.count,是因为我们想要更明确地追踪到状态的变化。
  2. 这个简单的约定能够让你的意图更加明显,这样你在阅读代码的时候能更容易地解读应用内部的状态改变。
  3. 此外,这样也让我们有机会去实现一些能记录每次状态改变,保存状态快照的调试工具。

由于 store 中的状态是响应式的,在组件中调用 store 中的状态简单到仅需要在计算属性中返回即可。触发变化也仅仅是在组件的 methods 中提交 mutation。

到此这篇关于Vuex中Store的简单实现的文章就介绍到这了,更多相关Vuex中的Store内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 搭建vue3项目以及按需引入element-ui框架组件全过程

    搭建vue3项目以及按需引入element-ui框架组件全过程

    element是基于vue.js框架开发的快速搭建前端的UI框架,下面这篇文章主要给大家介绍了关于搭建vue3项目以及按需引入element-ui框架组件的相关资料,文中通过图文以及代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • Vue实例的对象参数options的几个常用选项详解

    Vue实例的对象参数options的几个常用选项详解

    今天小编就为大家分享一篇Vue实例的对象参数options的几个常用选项详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vant中的toast层级改变操作

    vant中的toast层级改变操作

    这篇文章主要介绍了vant中的toast层级改变操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 详解如何在Vue里建立长按指令

    详解如何在Vue里建立长按指令

    这篇文章主要介绍了详解如何在Vue里建立长按指令,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)

    vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)

    这篇文章主要介绍了vue+mousemove实现鼠标拖动功能,文中给大家介绍了鼠标移动过快拖动就失效问题的解决方法,需要的朋友可以参考下
    2018-08-08
  • 详解vue中axios请求的封装

    详解vue中axios请求的封装

    这篇文章主要介绍了vue中axios请求的封装,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • vue+element 分页封装的实现示例

    vue+element 分页封装的实现示例

    本文主要介绍了vue+element 分页封装的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • vue-cli webpack 引入jquery的方法

    vue-cli webpack 引入jquery的方法

    小编使用的是webpack模板在vue-cli生成的工程中引入jquery的方法,首先在package.json里的dependencies加入"jquery" : "^2.2.3",然后install,具体内容详情大家参考下本文
    2018-01-01
  • vue中import导入三种方式详解

    vue中import导入三种方式详解

    在使用vue开发项目的时候,很多使用会import很多模块,这篇文章主要给大家介绍了关于vue中import导入三种方式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • Vue分页查询怎么实现

    Vue分页查询怎么实现

    这篇文章主要介绍了Vue分页查询怎么实现,使用vue实现分页的逻辑并不复杂,接收后端传输过来的数据,然后根据数据的总数和每一页的数据量就可以计算出一共可以分成几页
    2023-04-04

最新评论