浅学状态管理VueX

简介: 浅学状态管理VueX

https://vuex.vuejs.org/zh/guide/


每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。Vuex 和单纯的全局对象有以下两点不同:


  1. Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
  2. 你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。


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


  • state,驱动应用的数据源;
  • view,以声明方式将 state 映射到视图;
  • actions,响应在 view 上的用户输入导致的状态变化。


Vuex简单来说是数据共享的一个容器


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


安装

npm install vuex



使用


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

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
    state: {
      count: 0
    },
    mutations: {
      increment (state) {
        state.count++
      }
    }
  })
export default store  //导出

main.js导入


State



应用方式一


{{this.$store.state.count}}


应用方式二 computed

methods:{
    count(){
         return this.$store.state.count
  }
}


应用方式三 mapState辅助函数

computed:{
    //1、箭头函数
    count: state => state.count
    // 2、传字符串参数 'count' == state => state.count
     countAlias: 'count',
    //3、使用this获取局部状态,必须使用常规函数
    countState(state){
      return state.count + this.localCount
    }
    // count(){
    //   return this.$store.state.count
    // }
  }

最简便的方式


 computed: mapState([

   'count'

   ]),


Getters



通过属性访问


只显示已经完成的(done:true)

getters: {
        doneTodos: state => {
          return state.todos.filter(todo => todo.done)
        },


通过方法访问

<h3>getters通过方法访问:
      <li v-for="todo in this.$store.getters.doneTodos" :key="todo.id">{{todo.text}}</li>
    </h3>
<h3>getters通过方法访问:{{this.$store.getters.doneTodos}}</h3>


MaopGetters辅助函数

 <ul>
      getters通过mapGetters访问:
      <li v-for="todo in doneTodos" :key="todo.id">{{todo.text}}</li>
    </ul>

目录
相关文章
|
4月前
|
JavaScript 数据中心
Vuex工作机制
Vuex工作机制
29 0
|
11月前
|
JavaScript API
Vuex状态管理最佳实践
使用Vuex进行状态管理时,有一些最佳实践可以帮助你保持代码清晰、可维护和高效。以下是一些详细的Vuex状态管理最佳实践
137 3
|
22天前
|
存储 缓存 JavaScript
当Vue.observable()遇上Vuex:选择最佳状态管理方案的指南
【8月更文挑战第27天】在构建大型Vue应用程序时,合理管理组件间共享状态至关重要。本文深入探讨了Vuex和Vue.observable()两种状态管理工具的特点。Vue.observable()以其简洁的API适用于小型至中型项目,而Vuex遵循严格的Flux架构,专为复杂的大中型应用设计,确保状态变化的可预测性和高效性。通过示例代码比较两者实现方式,展示了尽管Vuex操作更为复杂,却能带来更好的可维护性和扩展性。最终,开发者可根据项目的具体需求和规模来选择最适合的状态管理方案。
28 0
|
4月前
|
存储 资源调度 JavaScript
阿珊解析Vuex:实现状态管理的利器
阿珊解析Vuex:实现状态管理的利器
|
21天前
|
存储 JavaScript 开发者
Vuex是如何帮助我们管理状态的
Vuex通过一系列核心概念和规则,帮助我们有效地管理和维护Vue.js应用程序中的状态。
13 4
|
2月前
|
存储 JavaScript API
Vue 全局状态管理新宠:Pinia实战指南
 随着Vue.js项目的日益复杂,高效的状态管理变得至关重要。Pinia作为Vue.js官方推荐的新一代状态管理库,以其简洁的API和强大的功能脱颖而出。本文将带您快速上手Pinia,从安装到应用,轻松实现Vue.js项目的全局状态管理,提升开发效率和项目可维护性。
|
4月前
|
JavaScript 前端开发
【干货分享】轻松入门 Redux:解密状态管理的神奇世界
【干货分享】轻松入门 Redux:解密状态管理的神奇世界
|
4月前
|
资源调度 JavaScript
如何使用 Vuex 管理应用的状态?
如何使用 Vuex 管理应用的状态?
25 3
|
4月前
|
存储 缓存 JavaScript
探索 Vuex 的世界:状态管理的新视角(下)
探索 Vuex 的世界:状态管理的新视角(下)
探索 Vuex 的世界:状态管理的新视角(下)
|
4月前
|
存储 资源调度 JavaScript
探索 Vuex 的世界:状态管理的新视角(上)
探索 Vuex 的世界:状态管理的新视角(上)
探索 Vuex 的世界:状态管理的新视角(上)