A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuqiong 金牌黑马   /  2018-7-19 10:27  /  1731 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

简单理解就是 vueX管理着一个web应用的全局变量

用法

1.可以在src目录下创建一个文件夹并命名为store
在store文件夹下创建 store.js文件

2.在main.js配置如下
主要新增了两条:
1)import store from ‘@/store/store.js’
2)注释//使用store那句

import Vue from 'vue'
import App from './App'
import router from './router'
import store from '@/store/store.js'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store, //使用store
  components: { App },
  template: '<App/>'
})
.在需要使用的vue组件中。当然也可以全局引入。

import store from '@/store/store.js'
以下是demo源码,仅供参考

store.js:

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

Vue.use(Vuex)

let getters = {
    countPlusTen(state,getters,rootState){
        return state.count+10;
    }
}

let  mutations = {
    increment: state => state.count++,
    decrement(state){
    return state.count=state.count-1;
  },
  //更改 Vuex 的 store 中的状态的唯一方法是提交 mutation
  //上面是 => 和 对等的普通写法
}

let actions = {
  increment (state) {
    state.commit('increment');
  },
  decrement (state) {
    state.commit('decrement');
  },
  //主要是操作mutations
}

export default new Vuex.Store({
  state: {
    count:1,
  },
  getters,
  mutations,//操作方法
  actions,//一般把参数传递给mutations操作
})

2.main.js (上面有,就不再贴了)

3.vue组件

<template>
  <div class="container">
    <h1 style="color:#000;font-size:3rem;" >
      {{$store.state.count}}
    </h1>
    <h1 style="color:#000;font-size:3rem;" >
      {{this.countPlusTen()}}
    </h1>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
  </div>
</template>

<script>
import store from '@/store/store.js'
export default {
  name: 'HelloWorld',
  data () {
    return {
      count: 0,
    }
  },
  computed:{
    count(){
      return store.state.count;
    }
  },
  methods: {
    increment () {
      store.dispatch('increment');//dispatch调用actions
      //actions 用conmmit 调用mutations
    },
    decrement () {
      store.dispatch('decrement');
    },
    countPlusTen(){
      return store.getters.countPlusTen;
    },
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>

4 个回复

倒序浏览
回复 使用道具 举报
奈斯
回复 使用道具 举报
回复 使用道具 举报
优秀,奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马