初始Vuex

Vuex概念:

Vuex 是为了保存组件之间共享数据而诞生的,如果组件之间有要共享的数据,可以直接挂载到vuex中,而不必通过父子组件之间的传值了,如果组件不需要共享,此时这些不需要共享的数据,没必要放到Vuex中.

注意:

只有共享的数据,才有权放vuex 中,组件内部私有的数据,只要放到组件的data中即可:
props、data、 vuex 三者的区别:

  1. Props是子组件需要传递的数据。
  2. data 是组件内部私有属性
  3. vuex是全局共享的数据存储区域,相当于是一个数据的仓库
安装
  1. 安装vuex,

    sudo npm i vuex --save

  2. 导入包

     import Vuex from 'vuex'
    
  3. 注册vuex到vue中

     Vue.use(Vuex)
    
  4. new Vuex.Store()实例,得到一个数据存储对象

import Vue from 'vue'

// 1. 导入vue-router包
import VueRouter from 'vue-router'
// 2. 手动安装VueRouter 
Vue.use(VueRouter)

// 3.导入app组件
import app from './app.vue'

//配置步骤
// 1. 装包  
// 2. 导入包
// 3. 注册包
// 4. 注册一个实例
// 5. 将vuex挂载到实例上
	

import Vue from 'vue'

// 1. 导入vue-router包
import VueRouter from 'vue-router'
// 2. 手动安装VueRouter 
Vue.use(VueRouter)

// 3.导入app组件
import app from './app.vue'

//配置步骤
// 1. 装包  
// 2. 导入包
// 3. 注册包
// 4. 注册一个实例
// 5. 将vuex挂载到实例上

import Vuex from 'vuex'
Vue.use(Vuex)

var store = new Vuex.Store({
  state: {
    //专门用来存数据的
    // 如果在组件中,想要访问.store中的数据,只能通过this.$store.state.*** 来访问
    count: 0
  },
  mutations: {
    // 如果要操作store 中的数据,只能通过调用mutations提供的方法,才能操作对应的数据
    // ,不推荐直接操作state中的数组,万一导致了数据的紊乱,不能快速定位到错误的原因,
    // 每个组件都可能有操作数据的方法
    // 定义一个管理员
    increment(state) {
      state.count++
    },
    // 只能传两个参数,其中参数一是 state 状态,参数二是提交过来的参数
    // 可以通过传入一个对象
    subtract(state, obj) {
      state.count -= (obj.c + obj.d)
    }
  },
  getters: {
    // 这里的数据只负责对外提供数据,不负责修改,如果想要修改,请去找mutation
    // 如果store中的state上的数据,在对外提供的时候,需要做一些包装,推荐使用getters.***
    optCount: function (state) {
      return '当前最新的count值是:' + state.count
    }
    // 对比之后,getters中的方法和组件中的过滤器类似,因为过滤器和getters都不会修改数据,都是把原数据做了包装提供给了调用者
    // getters和 computed 比较像,只要state的数据发生变化,如果getters也引用了这个数据,立刻触发重新求值
  }
})


var vm = new Vue({
  el: "#app",
  render: c => c(app),
  store   //在VM实例中,将vuex 创建的store 挂载到vm实例上,只要挂载到了vm上,就能全局访
  // 问所有的组件,任何组件都可以通过store来访问数据
})
  1. 在VM实例中,将vuex 创建的store 挂载到vm实例上,只要挂载到了vm上,就能全局访问所有的组件,任何组件都可以通过store来访问数据

     store
    
  2. 如果在组件中,想要访问.store中的数据,只能通过this.$store.state.***来访问

组件想要访问store内部的数据,使用this.$store.count++,但是不推荐,不符合vuex的设计理念推荐使用通过调用mutations提供的方法,才能操作对应的数据,不推荐直接操作state中的数组,万一导致了数据的紊乱,不能快速定位到错误的原因,每个组件都可能有操作数据的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值