Vue 开发实战生态篇 # 16:如何在Vue中使用Vuex

Posted 凯小默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue 开发实战生态篇 # 16:如何在Vue中使用Vuex相关的知识,希望对你有一定的参考价值。

说明

【Vue 开发实战】学习笔记。

新建工程

vue create vuex-demo

安装依赖

进入 vuex-demo 文件夹,安装 vuex

npm i vuex@3.1.0

修改main.js

import Vue from 'vue'
import Vuex from 'vuex'
import App from './App.vue'

Vue.use(Vuex)
Vue.config.productionTip = false

const store = new Vuex.Store(
  state: 
    count: 0,
  ,
  mutations: 
    increment(state) 
      state.count++
    
  ,
  // 异步操作   
  actions: 
    increment(commit) 
      setTimeout(()=>
        // state.count++ // 不要对state进行更改操作,应该通过commit交给mutations去处理
        commit('increment')
      , 2000)
    
  ,
  // 类似计算属性   
  getters: 
    doubleCount(state) 
      return state.count * 2
    
  
)

new Vue(
  store,
  render: h => h(App),
).$mount('#app')

修改 App.vue

<template>
  <div id="app">
    <h1>count:count</h1>
    <h2>doubleCount:$store.getters.doubleCount</h2>
    <button @click="$store.commit('increment')">commit:count++</button>
    <button @click="$store.dispatch('increment')">dispatch:count++</button>
  </div>
</template>

<script>

export default 
  name: 'app',
  computed: 
    count() 
      return this.$store.state.count
    
  

</script>

<style>
#app 
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;

</style>

效果可以自己手动试试:

以上是关于Vue 开发实战生态篇 # 16:如何在Vue中使用Vuex的主要内容,如果未能解决你的问题,请参考以下文章

Vue 开发实战生态篇 # 18:Vuex最佳实践

Vue 开发实战生态篇 # 25:单元测试的重要性及其使用

Vue 开发实战生态篇 # 21:Nuxt解决了哪些问题?

Vue 开发实战生态篇 # 17:Vuex核心概念及底层原理

Vue 开发实战生态篇 # 20:选择何种模式的路由及底层原理

Vue 开发实战生态篇 # 23:组件库对比:Element UIAnt Design VueiView