美文网首页
六、Vuex介绍

六、Vuex介绍

作者: Epat | 来源:发表于2019-06-04 09:21 被阅读0次

一、Vuex介绍

当我们在Vue对象中定义一个变量时,想要在其他的Vue对象或者js文件中想使用这个变量往往是很不容易的,而且Vue对象中的变量随着Vue销毁而销毁,所以需要一个全局的公共的数据仓库来管理这些变量,让这些变量的可以在任意组件中使用,它有着自身的生命周期,不会随着某一个Vue对象的销毁而销毁
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,它用以在不同的Vue对象中维护一个统一的数据仓库,并记录用户对数据仓库的操作,便于开发者随时了解和追踪数据仓库的变化和来源

二、Vuex基本使用

  1. 在codesandbox创建一个Vue项目
    打开https://codesandbox.io/s/vue
    在上面注册一个账号,并新建一个Vue项目

2.添加Vuex依赖

添加Vuex依赖

点击左侧 Add Dependency蓝色按钮,搜索Vuex


选择Vuex依赖

点击第一个Vuex添加


添加Vuex依赖成功
如上图箭头所示Vuex依赖已成功添加
  1. 引入vuex和初始化vuex仓库

在src目录下新建store文件夹和index.js


vuex仓库

并向index.js增加如下代码

import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    CHANGE(state, value) {
      state.count = value;
    }
  },
  actions: {
    add({ commit, state }) {
      commit("CHANGE", state.count + 1);
    },
    reduce({ commit, state }) {
      commit("CHANGE", state.count - 1);
    }
  }
});

export default store;


在src/main.js新增如下代码

import store from "./store/index";

new Vue({
  store,
  render: h => h(App)
}).$mount("#app");

修改App.vue为如下代码

<template>
  <div id="app">
    <button @click="reduce">-</button>
    <div>{{count}}</div>
    <button @click="add">+</button>
  </div>
</template>

<script>
export default {
  name: "App",
  computed: {
    count() {
      return this.$store.state.count;
    }
  },
  methods: {
    add() {
      this.$store.dispatch("add");
    },
    reduce() {
      this.$store.dispatch("reduce");
    }
  }
};
</script>

<style>
#app {
  display: flex;
  justify-content: center;
}
</style>

我们的vuex计数器便完成了,点击右侧刷新来查看这个计数器


计数器

三、Vuex概念介绍

  1. state

state是vuex中的数据仓库,我们把需要存放的数据放到state中,并在页面中通过使用this.$store.state来获取这个数据


定义state
使用state中的数据
  1. mutations

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件,我们通过定义mutations中的方法来修改state,如下图所示,定义了CHANGE方法,它会把传入的value赋值给state.count


mutations
  1. action

action 类似于 mutation,不同在于:

  • Action 提交的是 mutation,而不是直接变更状态
  • Action 可以包含任意异步操作

如下图所示,我们定义了两个action,一个是add负责增加count,另一个是reduce负责减少count,它们通过调用commit('名称', 值)的方式来调用上面定义的mutation实现对state的修改


action定义

在页面中我们通过调用this.$store.dispath('action名称')来调用action


action使用
三、Vuex在不同页面中使用
  1. 新建一个操作组件,如下图所示我们在components文件夹下新建一个operate.vue组件


    操作组件
  2. 在operate.vue中添加如下代码
<template>
  <div class="operate_box">
    <input type="number" v-model="count">
  </div>
</template>

<script>
export default {
  computed: {
    count: {
      get: function() {
        return this.$store.state.count;
      },
      set: function(value) {
        this.$store.dispatch("setCount", value);
      }
    }
  }
};
</script>
  1. 在App.vue中引入该组件,新增如下代码导入组件
<template>
  <div>
    <operate></operate>
  </div>
</template>
<script>
import operate from "./components/operate.vue";
export default {
  components: {
    operate
  }
};
</script>
  1. 修改Vuex的store新增setCount方法
const store = new Vuex.Store({
  actions: {
    setCount({ commit }, value) {
      commit("CHANGE", value);
    }
  }
});

5.可以看到我们在operate.vue中也可以展示和改变Vuex中的数据


Vuex不同组件

codesandbox代码

相关文章

  • 六、Vuex介绍

    一、Vuex介绍 当我们在Vue对象中定义一个变量时,想要在其他的Vue对象或者js文件中想使用这个变量往往是很不...

  • VUEX基本介绍,包含实战示例及代码(基于Vue2.X)

    VUEX 1 VUEX基本介绍 1.1 官方API 1.2 什么是vuex 1.3 Vuex使用场景 1、Vuex...

  • vuex

    Vuex介绍: Vuex官网:http://vuex.vuejs.org/ Vuex是实现数据状态管理的技...

  • vuex介绍

    1. vuex是什么 创建vue-cli 2. 状态自管理应用 3. 多组件共享状态的问题 4. vuex的核心概...

  • vuex介绍

    一、vuex介绍(1)vuex是什么? 借鉴 了Flux、Redux、 The Elm Architecture ...

  • vueX介绍

    在使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃...

  • vuex介绍

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

  • Vuex 介绍

    标签:Vuex iplas 介绍 每一个 Vuex 应用的核心就是 store(仓库), 是一个专为 Vue.js...

  • Vuex 介绍

    官方定义:vuex是专门为 vue.js应用程序开发的状态管理模式.它采取集中式存储管理应用所以组件状态,并以相应...

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

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

网友评论

      本文标题:六、Vuex介绍

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