Vuex的使用

 首先我们先搞清楚,Vue Vuex Vux 三者的区别,这一节主要讲Vuex的使用

vue 前端框架
链接:https://cn.vuejs.org/v2/guide/

vuex  状态管理模块(插件)

链接:https://vuex.vuejs.org/zh-cn/intro.html

vux  基于vue 和 we_ui开发的移动端UI组件库

链接:https://vuxjs.gitbooks.io/vux/content/ 

注意事项:

Vue 3 匹配的 Vuex 4 的文档, Vue 2 匹配的 Vuex 3 的文档(小伙伴们用vuex版本之前一定要先看自己的vue的版本)

由于的我的项目是vue2版本,这里先讲一下vue2.x中如何使用vuex(此处要使用vuex3呦

废话不多说,先安装起来看看

安装

npm install vuex --save

提示:vuex4对应vue3的版本,vuex3对应vue2的版本,目前用的vue2,应使用如下命令安装

使用 

使用之前,我们先讲以下vuex到底是啥子

vuex是一个专门为vue.js提供状态管理的插件,他集中管理所有组件的状态。那就是vue中的data部分的数据处理、methods中方法对数据的处理,我们都可以放在vuex中管理起来,如果其他兄弟组件想要访问的话,是不是就不用重新访问数据,同时也不用通过父子组件传值来获取数据,界面上的代码就更简洁了,逻辑也更明确。

下面是官网一个例子,我们先分析一下,未使用vuex,页面之前是怎么操作的。

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

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

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

上面描述的是一个单项数据流,比较简单,可以不用vuex处理,但是如果多个组件数据共享时,会出现一些问题:

1、传参的方法对于多层组件来说,特别繁琐,无法处理兄弟组件之间的状态

2、我们经常用父子组件直接引用或者通过事件来变更和同步状态,这种模式非常脆弱,通常会导致无法维护的代码。

什么时候用vuex

当我们开发大型项目时,需要数据和组件数据共享,使用vuex,如果只是单个页面开发,单向数据流就可以满足业务需求,使用vuex会是项目更繁琐,此时就不必使用vuex(例如常见的组件开发)。

简单使用

1、在main.js中先引入,在引用

import Vue from 'vue';

2、在src目录下创建store目录,并在该目录下创建index.js,文件如下: 我们先创建一个store,内部包含一个初始state对象和一些mutation,创建后导出,外部可使用

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;

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

store.commit('increment')

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

 为了在vue组件中访问store的属性,我们必须给vue实例提供创建好的store,vuex提供了一个从根组件向所有子组件,以store选项的方式注入该store的机制。

import store from './store'
new Vue({
 el:"#app",
 store:store
})

现在我们可以从任意组件的方法提交一个变更:

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

 方法每执行一次,store.state.count 的值变化一次。

下一节我们将详细的介绍,state、Getters 、Mutations、Actions、Modules

也可参考Vuex使用(官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值