来源
这个可以理解成为简化版的Vuex, 因为Vuex使用比较复杂, 在非大型项目中使用起来不方便, 为了简化传值操作, 2.6之后新增此API
使用方法
- 像 Vuex 一样, 需要新建一个
store.js
文件管理state
数据和mutation
操作, - 若组件需要使用数据和方法,
import
导入store.js
中的 数据和方法即可 - 值得注意的是, 数据还是需要放入
computed
中, 方法还是需要放入methods
中
实例
新建文件
import Vue from 'vue';
// 微型vuex , 创建一个state
export const store = Vue.observable({ count: 0, name: 'zs' });
// 创建修改state的方法
export const change = {
setCount(count) {
console.log(this);
// 注意这个方法一定不能使用this, 因为调用时this会指向调用这个方法的组件
store.count = count;
},
setName(name) {
store.name = name;
},
};
组件使用
<template>
<div>
<p>count : {{ count }}</p>
<p>name: {{ name }}</p>
<button @click="setCount(count + 1)">+</button>
<button @click="setCount(count - 1)">-</button>
<button @click="setName(newName)">change name</button>
</div>
</template>
<script>
import { store, change } from '../store/ob';
export default {
data() {
return {
newName: 'NEW NAME',
};
},
computed: {
count() {
return store.count;
},
name() {
return store.name;
},
},
methods: {
setCount: change.setCount,
setName: change.setName
},
};
</script>