博客详情

vue中vuex的简单使用 (原创)

作者: 朝如青丝暮成雪
发布时间:2020-04-13 21:28:50  文章分类:vue学习   阅读(719)  评论(0)

vue中vuex的简单使用


一、vuex是什么?

vuex集中式组件状态(数据)的存储方案,详见官网文档:https://vuex.vuejs.org/zh/


二、vuex中的基本概念

Vuex.Store({

state, //状态数据

getters,//state的延生状态,可以认为是state数据的简单过滤或计算返回

actions,// 动作,actions中的方法可以包含多个异步操作

mutations//突变, mutations中的方法仅支持同步操作

})

三、简单案例

注意:

项目中安装vuex组件

 cnpm install vuex --save

全局配置Vuex
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);


1、store.js


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

Vue.use(Vuex);

//声明state数据
const state={
  number:1
}

//由state派生出的一些状态 用getters表示
const  getters={
  evenOrOdd(state){
    return state.number %2 ==0 ?'偶数':'奇数'
  }
}


// 相当于controller层,其中的方法可以包含多个异步操作
const actions={
  increment(context){
    context.commit('inc');
  },
  decrement({commit}){
    commit('decr');
  }
}

//对数据的操作  相对于dao层,方法中只能含同步操作
const mutations={
  inc(state){
    state.number++;
  },
  decr(state){
    state.number--;
  }
}

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

});
2、main.js



// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'

import App from './App'
import router from './router/router.js'
import store from './store/store.js'


Vue.config.productionTip = false


//Vue1.0的写法
// new Vue({
//   el: '#app',
//   router, //在main.js的顶层Vue实例中挂载router (全局)
//   store, // 在main.js的顶层Vue实例中挂载store (全局)

//   components: { App },
//   template: '<App/>'
// })

//Vue2.0的写法
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app');


3、App.vue


<template>
  <div>
    <p>Current Number {{number}} is {{evenOrOdd}}</p>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
  </div>
</template>

<script>
  import {mapState,mapGetters,mapActions} from 'vuex'
  export default {
    name: 'App',
    computed:{

      //简化了书写 this.$store.state.number
      //简化了书写 this.$store.getters.evenOrOdd
      ...mapState(['number']),
      ...mapGetters(['evenOrOdd'])
    },
    methods:{
      //简化了书写  this.$store.dispatch('action中的方法名', 额外的载荷对象)
      ...mapActions(['increment','decrement'])
    },

  }
</script>

<style scoped>

</style>



关键字:  vue  vuex  store
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号