美文网首页
Vuex 基础

Vuex 基础

作者: BestFei | 来源:发表于2020-02-24 17:12 被阅读0次

零、场景说明
通过vuex实现计数器的功能

一、入口文件进入vuex
import Vuex from 'vuex'

Vue.use(Vuex)
二、入口文件修改

new一个vuex的Store实例,初始 state 状态对象

const store = new Vuex.Store({
  state: {
    count: 0,
  }
})

在vue中注入store,为了在每个实例中可以通过this.$store来访问

new Vue({
  store,
  render: h => h(App),
}).$mount('#app')
三、在页面访问count的值

修改app.vue文件

<template>
  <div id="app">
    {{count}}
  </div>
</template>

<script>
export default {
  name: 'app',
  computed: {
    count() {
      return this.$store.state.count
    }
  }
}
</script>

此时,页面已经能展示count的值了


四、实现动态变化的功能

1、在页面上增加一个按钮,实现点击后count值加一的效果

<button @click="$store.commit('increment')">count++</button>

2、修改入口
在申明的Store代码中增加一个mutations方法increment,与页面上的点击时间触发的方法名一致

const store = new Vuex.Store({
  state: {
    count: 0,
  },
  mutations: {
    increment(state) {
      state.count++
    }
  }
})

此时,页面已经实现了通过点击【count++】按钮来count的值加一的效果。


3、同理如果我们要实现一个加二的操作
修改按钮

<button @click="$store.commit('increment2',2)">count+2</button>

修改mutations

mutations: {
    increment2(state,n) {
      state.count +=n
    }
  }
五、actions实现异步操作

actions通过 commit 的形式提交给 mutations 去处理

actions: {
    dispatch_increment({commit}) {
      setTimeout(()=>{
        commit('increment')
      }, 3000)
    }
  }

页面添加一个按钮,通过dispatch来调用actions

<button @click="$store.dispatch('dispatch_increment')">count++ by dispatch</button>

这样就实现了,通过点击【count++ by dispatch】来实现延迟3秒,count值加一的效果了。

六、缓存数据

vuex的getters有点类似于计算属性,可以用来缓存数据

getters: {
    doubleCount(state) {
      return state.count * 2
    }
  }

修改页面,增加页面调用

{{$store.getters.doubleCount}}

这样就实现了,点击按钮后,值扩大两倍的效果了


七、总结

State ,提供一个响应式数据,通过this.$store.state.xxx 取值
Getter ,借助 Vue 的计算属性 computed 来实现缓存,通过 this.$store.getters.xxx 取值
Mutation ,更改 state 方法,通过this.$store.commit(“xxx”) 赋值
Action , 触发 mutation 方法,通过this.$store.dispatch(“xxx”) 赋值
Module,Vue.set 动态添加state到响应式数据中

相关文章

  • vuex基础

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

  • vuex 基础

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

  • vuex基础

    vuex介绍 需求:父子组件的传值可以通过props和发布事件来传递,不相关的组件如何传递数据,或者说共用一份数据...

  • vuex基础

    1.vuex是什么? 状态管理模式,集中式存储管理,多组件需要共享状态时使用vuex 1.1状态管理模式 单个组件...

  • vuex基础

    vuex Vuex是什么呢?它是Vue的状态管理模式,在使用vue的时候,需要在vue中各个组件之间传递值是很痛苦...

  • Vuex 基础

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

  • Vuex基础

    父子组件之间的通信,父组件通过props向子组件传递参数,子组件通过$emit将数据回传给父组件。但是如果我们有多...

  • 【Vuex】基础

    1.Vuex干什么用的 1.1存在的问题 多个组件共享状态时,必须实现: 多个视图依赖于同一状态。 来自不同视图的...

  • vuex 基础结构

    state.js 与组件、项目、模块相关的底层数据 getters.js 对数据的映射,可以写一些复杂的判断逻辑 ...

  • vuex基础用法

    简单汇总一下vuex的最基础的用法 服务端渲染的写法(推荐使用)

网友评论

      本文标题:Vuex 基础

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