# 1. vuex是什么

github站点: https://github.com/vuejs/vuex

在线文档: https://vuex.vuejs.org/zh-cn/

简单来说: 对应用中组件的状态进行集中式的管理(读/写)

# 2. 状态自管理应用

state: 驱动应用的数据源

view: 以声明方式将state映射到视图

actions: 响应在view上的用户输入导致的状态变化(包含n个更新状态的方法)

![单向数据流](https://vuex.vuejs.org/zh-cn/images/flow.png)

# 3. 多组件共享状态的问题

多个视图依赖于同一状态

来自不同视图的行为需要变更同一状态

以前的解决办法

* 将数据以及操作数据的行为都定义在父组件

* 将数据以及操作数据的行为传递给需要的各个子组件(有可能需要多级传递)

vuex就是用来解决这个问题的

![vuex结构](https://vuex.vuejs.org/zh-cn/images/vuex.png)

# 4. vuex的核心概念

## 1). state

vuex管理的状态对象

它应该是唯一的

 const state = {

  xxx: initValue

 }

## 2). mutations

包含多个直接更新state的方法(回调函数)的对象

谁来触发: action中的commit('mutation名称')

只能包含同步的代码, 不能写异步代码

 const mutations = {

  yyy (state, data) { 

   // 更新state的某个属性

  }

 }

## 3). actions

包含多个事件回调函数的对象

通过执行: commit()来触发mutation的调用, 间接更新state

谁来触发: 组件中: $store.dispatch('action名称')  // 'zzz'

可以包含异步代码(定时器, ajax)

 const actions = {

  zzz ({commit, state}, data1) {

   commit('yyy', data2)

  }

 }

## 4). getters

包含多个计算属性(get)的对象

谁来读取: 组件中: $store.getters.xxx

 const getters = {

  mmm (state) {

   return ...

  }

 }

## 5). modules

包含多个module

一个module是一个store的配置对象

与一个组件(包含有共享数据)对应

## 6). 向外暴露store对象

 export default new Vuex.Store({

  state,

  mutations,

  actions,

  getters

 })

## 7). 组件中:

import {mapGetters, mapActions} from 'vuex'

 export default {

  computed: mapGetters(['mmm'])

  methods: mapActions(['zzz'])

 }
{{mmm}} @click="zzz(data)"

## 8). 映射store

 import store from './store'

 new Vue({

  store

 })

## 9). store对象

1.所有用vuex管理的组件中都多了一个属性$store, 它就是一个store对象

2.属性:

state: 注册的state对象

getters: 注册的getters对象

3.方法:

 dispatch(actionName, data): 分发action  

# 5. 将vuex引到项目中

## 1). 下载: npm install vuex --save

## 2). 使用vuex

1.store.js
import Vuex from 'vuex'

  export default new Vuex.Store({

   state,

   mutations,

   actions,

   getters,

   modules

  })
 2.main.js
import store from './store.js'

  new Vue({

   store

  })

vue核心概念的更多相关文章

  1. 极客时间_Vue开发实战_05.Vue组件的核心概念(1):属性

    05.Vue组件的核心概念(1):属性 代码地址: https://github.com/tangjinzhou/geektime-vue-1/blob/master/%E6%BC%94%E7%A4% ...

  2. 极客时间_Vue开发实战_06.Vue组件的核心概念(2):事件

    06.Vue组件的核心概念(2):事件 通过emit传递给父组件 我们点击了重置失败,上层的div的click=handleDivClick是接收不到.重置失败的点击的行为的 通常情况下,你不用.st ...

  3. 极客时间_Vue开发实战_07.Vue组件的核心概念(3):插槽

    07.Vue组件的核心概念(3):插槽 严格来的说在2.0之后已经不分区这两种插槽的概念了. 因为它底层的实现已经趋向于相同了. 2.6为了兼容2.5的版本,现在依然可以用这两种写法 作用域插槽就是多 ...

  4. 2.基础:Vue组件的核心概念

    一.组件基础和注册 组件概念 组件系统是 Vue 的另一个重要概念,他的核心就是封装和复用. 细节 组件的name必须是全局唯一. 二.属性.事件和插槽 组件的三大核心概念:属性.事件和插槽. 属性, ...

  5. 深入理解Vue组件3大核心概念

    摘要: 搞懂Vue组件! 作者:浪里行舟 原文:详解vue组件三大核心概念 Fundebug经授权转载,版权归原作者所有. 前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽 ...

  6. 【VUE】8.VUEX核心概念

    1. Vuex核心概念主要如下 state : 存储共享数据 mutation: 变更store中的数据,方法,不能异步操作 action: 异步操作,通过触发mutation变更数据 getter: ...

  7. vue(23)Vuex的5个核心概念

    Vuex的核心概念 Vuex有5个核心概念,分别是State,Getters,mutations,Actions,Modules. State   Vuex使用单一状态树,也就是说,用一个对象包含了所 ...

  8. Vue基础概念,学习环境等

    前提: 你已有 HTML.CSS 和 JavaScript 中级前端知识. 概念: Vue.js(读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vu ...

  9. react 教程—核心概念

    react 核心概念  : https://react.docschina.org/docs/getting-started.html(官网) 或  https://www.w3cschool.cn/ ...

随机推荐

  1. libevent-signal(1)

    现在已经知道,libevent有三种事件类型,分别是时钟事件,信号事件,i/o事件.今天就分析一下信号事件,下面是一个简单的信号事件demo #include <sys/types.h> ...

  2. 前端面试题总结(一)HTML篇

    前端面试题总结(一)HTML篇 一.iframe的优缺点? 缺点: 1.会阻塞主页面的onload事件(iframe和主页面共享链接池,而浏览器对相同域的链接有限制,所以会影响页面的并行加载). 解决 ...

  3. BZOJ1797:[AHOI2009]最小割(最小割)

    Description A,B两个国家正在交战,其中A国的物资运输网中有N个中转站,M条单向道路.设其中第i (1≤i≤M)条道路连接了vi,ui两个中转站,那么中转站vi可以通过该道路到达ui中转站 ...

  4. 动量法应用NASA测试不同飞机机翼噪音

    %matplotlib inline from mxnet import nd import numpy as np from mxnet import autograd,gluon,init,nd ...

  5. struts2不同版本在核心filter在web.xml中的配置

    FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.配置如下: <filter> <filter-name>struts2</filte ...

  6. H5基本标签

  7. Docker 三种UI管理平台

    docker集中化web管理平台 一.shipyard 1.启动docker,下载镜像 # systemctl restart docker # docker pull alpine # docker ...

  8. Reading Notes : 180214 计算机的总线结构

    读书<计算机组成原理>,百度百科 基本上接触过计算机的人,都多少知道计算机的具体构成,但是真正能讲明白的却说了很多,本节将讲解一下计算机的基本硬件构成和一些基本信息,简单认识,以后再深入了 ...

  9. 时间、时间戳相关小结 - iOS

    项目中难免会与时间打交道,故此次围绕时间展开做了一些日常使用的小结;如下 code 中也是围绕一些日常开发中较为常用的点展开小的方法封装. 具体方法的使用如下: // 2019-02-21 17:30 ...

  10. 『C++』Temp_2018_12_06

    #include <iostream> #include <string> using namespace std; class Type{ public: string Na ...