VUE 的基本入门(2)

216 阅读3分钟

风景 - 10.jpg

回顾

上次我们简单的介绍了vue以及它的一些基本文档结构和他的路由使用,今天我们来说说vue中一个很重要的数据存储功能:vuex

Vuex 是什么?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension (opens new window),提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。

什么是“状态管理模式”?

让我们从一个简单的 Vue 计数应用开始: `

new Vue({
  // state
  data () {
    return {
      count: 0
    }
  },
  // view
  template: `
    <div>{{ count }}</div>
  `,
  // actions
  methods: {
    increment () {
      this.count++
    }
  }
})

`

这个状态自管理应用包含以下几个部分:

  • state,驱动应用的数据源;

  • view,以声明方式将 state 映射到视图;

  • actions,响应在 view 上的用户输入导致的状态变化。

更详细的内容请访问vue官方文档:VUEX

同样在我们下载模板时,同样要勾选上vuex,这样在模板当好后,就已经存在store文件以及它里面的index.js ,如下图:

image.png

在进入index.js文件后,内容如下图

image.png

他首先默认引入了vue和vuex,默认抛出了一个对象, 首先介绍一下她跑出的四个对象分别代表了什么:

state

这里的state是用来定义数据的,确定好你要储存的数据类型,定义相对应的数据

mutations

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation,非常类似于事件,通过store.commit 方法触发

getters

可以认为是 store 的计算属性,就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。Getter 会暴露为 store.getters 对象,你可以以属性的形式访问这些值.

action

action 类似于 mutation,不同在于action 提交的是 mutation,而不是直接变更状态,action 可以包含任意异步操作

module

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)

在使用vuex的时候请切记一下几点:

如果请求来的数据是不是要被其他组件公用,仅仅在请求的组件内使用,就不需要放入vuex 的state里。

如果被其他地方复用,这个很大几率上是需要的,如果需要,请将请求放入action里,方便复用。

从vuex中取的数据,不能直接更改,需要浅拷贝对象之后更改,否则报错

vuex的数据持久化

  • 安装
npm install vuex-persistedstate  --save
  • 引入及配置

想要存储到sessionStorage,配置如下

import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
  // ...
  plugins: [createPersistedState({
      storage: window.sessionStorage
  })]
})