关于vuex

105 阅读2分钟

什么是vuex?

vuex是一个专门为vue.js应用开发获取到状态管理模式,vuex存放的状态是响应式的,更改状态的唯一途径是显示提交(commit)触发mutation更改state.

src=http___p9-juejin.byteimg.com_tos-cn-i-k3u1fbpfcp_ba2a57d660d640f9b41c409340703bd3_tplv-k3u1fbpfcp-zoom-crop-mark_1956_1956_1956_1101.image&refer=http___p9-juejin.byteimg.webp

vuex的原理是什么?

每一个 Vuex 应用的核心就是 store(仓库)。“store” 基本上就是一个容器,它包含着你的应用中大部分的状态 ( state )。

0c2ac9d2516842c6bca6803792abcd7c.png Vuex为Vue Components建立起了一个完整的生态圈,包括开发中的API调用一环。

  • Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
  • 改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样可以方便地跟踪每一个状态的变化。

vuex的安装

进入项目,在命令行中输入安装指令,回车

npm install vuex --save

然后配置 vuex,使其工作起来:在src路径下创建store文件夹,然后创建index.js文件,文件内容如下

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({ state: 
{
    // 定义一个name,以供全局使用
    name: '张三',
    // 定义一个number,以供全局使用
    number: 0, 
    // 定义一个list,以供全局使用 
    list: [
        { id: 1, name: '111' }, 
        { id: 2, name: '222' }, 
        { id: 3, name: '333' }, 
    ], 
    },
  });
    
    export default store;

修改main.js:

import Vue from "vue";
import App from "./App";
import router from "./router";
import store from "./store";
// 引入我们前面导出的store对象
Vue.config.productionTip = false;
new Vue({
  el: "#app",
  router,
  store,
  // 把store对象添加到vue实例上
  components: { App },
  template: "<App/>",
});

最后修改App.vue:

<template>
    <div></div> 
</template>
<script> 
export default {
    mounted() { 
    // 使用this.$store.state.XXX可以直接访问到仓库中的状态 
    console.log(this.$store.state.name);
    }, 
};
</script>

此时,启动项目npm run dev,即可在控制台输出刚才我们定义在store中的name的值。

如何在组件中使用Vuex的mapState


import {mapState} from 'vuex'
export default{
    computed:{
        ...mapState("use", ["userInfo"])
    }
}

如何在组件中使用Vuex的mapActions

import { mapActions } from 'vuex'
methods:{
   ...mapActions("use", ["getuseInfoAsync"]),
}

最后感谢观看到此的来客,若有不足的地方还希望多多指点。