美文网首页
一、vuex简单计数器

一、vuex简单计数器

作者: 罂粟1995 | 来源:发表于2018-08-27 17:18 被阅读0次

直接看概念太枯燥,还是边写代码边理解吧。

先做一个最简单的计数器,效果:


image.png

点加号数字加一,点减号数字减一。

安装

首先用vue-cli构建项目,具体教程请看:https://www.jianshu.com/p/b9c4db1a0815
然后进入目录,安装vuex:

npm install --save vuex

目录结构

image.png

在src目录下,新增store目录,store目录下有index.js文件和modules文件夹。把相关的store分离到modules目录下,再在index.js中引入。

App.vue是根页面级组件,main.js是入口文件。

引入vuex

store/index.js中引入vuex:

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

Vue.use(Vuex)

main.js中引入store/index.js:

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

Vue.config.productionTip = false

new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})

modules

当应用比较简单时,可以把状态都写在一个store对象index.js里,但当应用变得非常复杂时,index.js就有可能很臃肿。
所以我们将 store 分割成模块(module)。
写一个count模块:
count_store.js:

export default{
    state:{
        count:1
    }
}

store/index.js中引入:

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

Vue.use(Vuex)

import count_store from './modules/count_store.js';

export default new Vuex.Store({
    modules:{
        count:count_store
    }
})

组件中使用

在components目录下新增一个demo.vue文件。
demo.vue:

<template>
    <div>
        <p>{{ $store.state.count.count }}</p>
    </div>
</template>

$store.state.count.count即引用了count:1这个状态。
在App.vue中引用这个组件。
App.vue:

<template>
  <div id="app">
    <Demo></Demo>
  </div>
</template>

<script>
import Demo from './components/demo.vue'

export default {
  components: {
    Demo
  }
}
</script>

npm run dev运行,可以看到页面上有个数字1,就是count的初始值。

mutations

官方文档写道:
更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数。

我们现在还缺一个加的按钮和一个减的按钮。
在count_store.js中增加mutations:

export default{
    state:{
        count:1
    },
    mutations:{
        increment(state){
            state.count++;
        },
        decrement(state){
            state.count--;
        }
    }
}

在demo.vue中新增两个按钮,并使用 $store.commit('方法名') 来触发 mutations 中的方法(mutations中的方法是不分组的):

<template>
    <div>
        <p>{{ $store.state.count.count }}</p>
        <div>
            <button @click="$store.commit('increment')">+</button>
            <button @click="$store.commit('decrement')">-</button>
        </div>
    </div>
</template>

npm run dev运行,可以看到效果:

image.png image.png

相关文章

  • 一、vuex简单计数器

    直接看概念太枯燥,还是边写代码边理解吧。 先做一个最简单的计数器,效果: 点加号数字加一,点减号数字减一。 安装 ...

  • 【融职培训】Web前端学习 第7章 Vue基础教程11 vuex

    一、Vuex概述 二、基于Vuex的计数器 我们不能直接修改state,需要定义mutation来操作state,...

  • Vuex 基础

    零、场景说明通过vuex实现计数器的功能 一、入口文件进入vuex 二、入口文件修改 new一个vuex的Stor...

  • 通过一个简单实例了解vuex

    简单说明 什么是vuex,vuex怎么使用,什么场景下适合使用vuex, vuex 文档中都有介绍。看完文档之后,...

  • vue状态管理vuex

    一、vuex的简单介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,简单的来说作用是:可以简单...

  • vuex的简单应用01

    二、简单的从store中取值 三、简单的改变vuex中的值 三.1 简单的改变vuex中的值--传递一个参数 三....

  • vuex入门例子

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

  • vuex记录

    前言 官方文档讲vuex讲的很清楚了,本文用于总结vuex的简单使用 简介 Vuex 是一个专为 Vue.js 应...

  • 前端数据流之vuex

    从前整理过vuex,这篇是补充 最简单的vuex 多个组件共享状态时的vuex 初始化 vue create vu...

  • 2020-03-25 vuex 全集

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

网友评论

      本文标题:一、vuex简单计数器

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