Vue全家桶+SSR+Koa2全栈开发美团网①——Vuex基础

不相关的多个组件想共用一份数据,Vuex可以起到关联作用

Status:存储所有组件想要共享的数据,相当于组件中的data

Mutations:直接操作status中的数据,即定义如何改变status中的数据

Actions:什么时候去改变这个数据,需要actions来触发

组件交互触发Actions,Actions提交commit来告诉Mutations在这个时候执行操作,然后改变status中的数据,改变的数据会重新渲染组件

示例:

安装vuex插件

npm i vuex --save

在src目录下创建一个store.js,写入

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const state = {
  count: 1
}

const mutations = {
  increment(state) {
    state.count++
  },
  decrement(state) {
    state.count--
  },
}

const actions = {
  increment: ({commit}) => {
    commit('increment')
  },
  decrement: ({commit}) => {
    commit('decrement')
  }
}

export default new Vuex.Store({state, mutations, actions})

在main.js中引入和使用store.js

import store from './store'

new Vue({
  render: h => h(App),
  store
}).$mount('#app')

 创建一个新的组件vuexx.vue,写入

$store.state.count 可以得到store中共享的数据,mapAtions起到方法关联的作用

不使用mapAtions,increament也还是方法,但它就不能关联到store下的increament的方法

 

高级示例:

在src目录下新建store文件夹,新建下列文件

 a.js中写入

 b.js中写入 

index.js入口文件写入,通过模块导出这2个数据

在main.js中导入和使用index.js

然后创建2个组件 a.vue和b.vue,在父组件中引入

之后就可以在a.vue中使用和操作a.js模块中的数据,注意使用的mapActions函数会有变化,一定要指定对应的模块

b.vue也是同理 

这样2个数据是相互独立的

 

有时我们想点击按钮后想让数据加2而不是加1,这时候我们需要传参,而且是从事件触发时开始考虑传参

add中传入一个参数2

action中继续传播这个参数2,也就是param

在mutations操作数据时就可以使用这个参数2

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风里有诗句哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值