vuex入门例子

作者: zhangjingbibibi | 来源:发表于2018-12-11 14:46 被阅读5次

vuex example

接着上一篇的vuex简单剖析,接下来主要来写一个简单的例子🌰,来操作一番。

<template>
  <div>
    <p>click {{count}} times, count is {{evenOrOdd}}</p>

    <button @click="increment">+</button>
    <button @click="decrement">-</button>
    <button @click="incrementIfOdd">increment if odd</button>
    <button @click="incrementAsync">increment async</button>
  </div>
</template>

<script>
  import {mapState, mapActions, mapGetters} from 'vuex'

  export default {

    mounted () {
      console.log(this.$store)
    },

    /*computed: {
      count () {
        return this.$store.state.count
      },
      evenOrOdd () {
        return this.$store.getters.evenOrOdd
      }
    },*/
    computed: {
      ...mapState(['count']),
      ...mapGetters(['evenOrOdd'])
      // ... 扩展运算符
      // mapGetters和mapState执行 返回值为对象 {evenOrOdd () {return this.$store.getters.evenOrOdd}}
      // 如果名字不一致 不能使用(['']) ...mapGetters({event callback name:'getters name')
    },

    /*methods: {
      increment () {
        this.$store.dispatch('increment')
      },
      decrement () {
        this.$store.dispatch('decrement')
      },
      incrementIfOdd () {
        this.$store.dispatch('incrementIfOdd')
      },
      incrementAsync () {
        this.$store.dispatch('incrementAsync')
      }
    }*/
    methods: {
      ...mapActions(['increment', 'decrement', 'incrementIfOdd', 'incrementAsync'])
    }
  }
</script>

store

/*
vuex最核心的管理对象store
 */
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

/*
相当于data对象的状态对象
 */
const state = {
  count: 0  // 指定初始化数据
}

/*
包含了n个直接更新状态的方法的对象
 */
const mutations = {
  INCREMENT (state) {
    state.count++
  },
  DECREMENT (state) {
    state.count--
  }
}

/*
包含了n个间接更新状态的方法的对象
 */
const actions = {
  // {commit} -> 传了一个对象 ,对象解构
  increment ({commit}) {
    // 提交一个mutation请求
    commit('INCREMENT')
  },
  decrement ({commit}) {
    // 提交一个mutation请求
    commit('DECREMENT')
  },
  incrementIfOdd ({commit, state}) {
    if (state.count % 2 === 1) {
      // 提交一个mutation请求
      commit('INCREMENT')
    }
  },
  incrementAsync ({commit}) {
    setTimeout(() => {
      // 提交一个mutation请求
      commit('INCREMENT')
    }, 1000)
  }
}

/*
包含多个getter计算属性的对象
 */
const getters = {
  // 不需要调用
  evenOrOdd (state) { // 当读取属性值时自动调用并返回属性值
    return state.count % 2 === 0 ? '偶数' : '奇数'
  }
}

export default new Vuex.Store({
  state, // 状态
  mutations, // 包含多个更新state fn
  actions, // 包含多个时间回调函数
  getters // 包含多个 compute getter
})

这篇article just 记录一下

相关文章

  • vuex入门例子

    vuex example 接着上一篇的vuex简单剖析,接下来主要来写一个简单的例子?,来操作一番。 store ...

  • vuex 基础

    标签: vue [toc] 大纲: 什么时候用到vuex,简介vuex,举例子说明vuex的最佳实践;细节: ac...

  • 后台管理(4)--- vuex的实际使用(vue)

    今天我们来讨论一下在项目中到底应该怎么使用vuex(vuex还没有入门的同学可以先看这个链接vuex 入门及持久化...

  • 轻松上手Vue - 简化Vuex

    PS: Vuex 对于很多初入门Vue的来说,入门困难,感觉非常绕。 Vuex 是一个专为 Vue.js 应用程...

  • Vuex

    学习vuex时,如果文档上写‘vuex里的mutations里不能是异步的’,如果他没举例子,自己要举例子,比如:...

  • vuex入门详解

    vuex最简单、最详细的入门文档 vuex最简单、最详细的入门文档 如果你在使用 vue.js , 那么我想你可能...

  • vuex入门

    vuex最简单、最详细的入门文档

  • 2020-03-25 vuex 全集

    Vuex入门(1)—— Vuex的设计初衷和简单使用 https://blog.csdn.net/dkr38020...

  • vuex入门

    1.入门使用 (1)引入vuex (2)新建src/vuex文件夹,在vuex中新建store.js文件。文件中引...

  • vuex入门

    Vuex是什么 Vuex是一个专为Vue.js应用程序开发的 状态管理模式 。它采用集中式存储管理应用的所有组件的...

网友评论

    本文标题:vuex入门例子

    本文链接:https://www.haomeiwen.com/subject/gemocqtx.html