import Vue from 'vue'
// 这里引入vuex
import Vuex from 'vuex' Vue.use(Vuex)
export default new Vuex.Store({
// state里面的是全局的属性
state:{
num:0,
price:15,
name:'葡萄',
testList:[]
},
// mutations里面的是全局的方法 参数state是固定写法 可以获取参数
// 用这样的方式去调用 this.$store.commit('xxx');
mutations:{
add(state){
state.num++ ;
console.log(state.num)
}
},
// getters是Vuex里的属性计算参数state是固定写法 可以获取参数
// 调用方法 this.$store.getters.count
// Vuex的计算属性,在视图中当变量使用
// 计算属性依赖一个可变的属性 只要这个属性发生变化 这个函数就会自动执行
getters:{
count(state){
// 返回一个计算好的值
return state.num*state.price
}
},
// 异步方法 用这样的方式去调用 this.$store.dispatch('xxx');
actions:{
testActions(context){
// context里面包含了state mutations getters actions的方法及属性可以直接调用
// 执行一些异步的操作或者通用的ajax请求
setTimeout(()=>{
context.state.testList = ['大娃','二娃','三娃','四娃','五娃']
},2000)
}
}
})
html
<template>
<view>
<view>{{ datas }}</view>
<view>数量:{{ num }}</view>
<view>{{ name }}</view>
<view>总价:{{count}}</view>
<button type="primary" @click="add">add</button>
<button type="primary" @click="testActions">testActions</button>
<view>
<view v-for="(item,index) in testList" :key='index'>
{{item}}
</view>
</view>
<!-- <view>
<uni-calendar
:insert="true"
:lunar="true"
:disable-before="true"
:start-date="'2019-3-2'"
:end-date="'2019-5-20'"
@change="change"
></uni-calendar>
</view> -->
</view>
</template> <script>
// 把下载好的组件引进要使用的地方
import uniCalendar from '../../components/uni-calendar/uni-calendar.vue'; export default {
data() {
return {
datas: '',
// 可以值获取到name的值
name:this.$store.state.name
};
},
// 记得要在components里面去局部注册
components: {
uniCalendar
},
onReady() {
this.getajax();
},
computed: {
// 需要在计算属性里面设置
num() {
return this.$store.state.num;
},
count(){
return this.$store.getters.count;
},
testList(){
return this.$store.state.testList;
}
},
methods: {
getajax() {
uni.request({
url: 'https://bird.ioliu.cn/weather', //仅为示例,并非真实接口地址。
data: {
city: '北京'
},
header: {
'custom-header': 'hello' //自定义请求头信息
},
success: res => {
console.log(res.data);
this.datas = res.data.basic.city;
console.log(this.datas);
}
});
},
add() {
// 这里用this.$store.commit(xxx')去调用方法
this.$store.commit('add');
},
testActions(){
this.$store.dispatch('testActions');
}
}
};
</script> <style lang="scss">
uni-rate {
height: 200px;
}
</style>