复习Vuex

Vuex是一个专为Vue.js应用程序开发的状态管理模式,用于集中管理应用的状态,并确保状态变化的可预测性。当组件需要共享状态时,Vuex提供了解决方案,通过State存储状态,Mutations唯一修改状态,Actions处理异步操作,Getter提供计算属性。通过使用Vuex,可以更好地组织和维护复杂的组件状态,实现单向数据流并解决多视图间的同步问题。
摘要由CSDN通过智能技术生成

介绍:Vuex是一个转为Vue.js应用程序开发的状态管理模式+库。它采用集中式存储管理应用的所有组件的状态,并以相对的规则保证状态以一种可预测的方式发生变化。 

一.什么是"状体管理模式"

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

const Counter = {
  // 状态
  data () {
    return {
      count: 0
    }
  },
  // 视图
  template: `
    <div>{{ count }}</div>
  `,
  // 操作
  methods: {
    increment () {
      this.count++
    }
  }
}

createApp(Counter).mount('#app')

这个状态管理应用包含一下几个部分

状态:驱动应用的数据源

视图:以声明方式将状态映射到视图

操作:响应在视图上的用户输入导致的状态变化。

以下是一个表示"单向数据流"理念的简单示意:

但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:

1.多个视图依赖于同一状态。

2.来自不同视图的行为需要变更同一状态。

对于问题一,传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。对于问题二,我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护代码。

 

解析:从图中可以看出,在State里面定义变量,在Mutations里面定义修改State的方法,且是唯一的,Action,用英文翻译过来它的意思就是行动的意思,在这里面可以定义一些异步的方法,总共是有五种的,还有getter,module,getter,类似于computed计算属性,module将js的文件抽离出来,抽离出来的注意点是什么呢?如果是本模块就不需要在前面加上模块名,不是本模块需要加上模块名,在进行触发。

通常的调用形式是什么样子的呢?

触发Muaction,里面的方法,在页面上触发,this.$store.commit('方法的名字')

触发Action,里面的方法,在页面上触发,this.$store.dispatch('方法的名字')

在Action里面也有两个参数,store,commit,可以通过这两个来调用,Muaction里面的方法,

放一些异步的ajax请求 ,然后在页面上通过this.$store.dispatch来触发,在Action里面继续触发Muaction里面的方法, 从而修改在state里面的变量。在state定义的变量,在任意的组件上都能进行

使用,这样一来我们就可以模拟一个触发。

举个例子来说

 解决了,多个视图依赖于同一状态的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值