vue的挖坑和爬坑之vuex的简单入门

首先vuex的中文文档https://vuex.vuejs.org/zh-cn/

首先vuex是什么,官方解释是

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。

我的理解是

就是vue组件之间的数据管理

event bus

对于vue组件之间的数据传递,父子之间的简单的传递还算是简单,然后你要在各个组件之间传递的话就不太方便了,有两种解决方案暂时我只接触到了两种,其中一种就是用event bus,在入口js中定义一个bus(巴士)

new Vue({
  el: ‘#app‘,
  router,
  template: ‘<App/>‘,
  components: { App },
  data: {
    Bus: new Vue()
  }
});

然后你可以放数据放在bus中

 this.$root.Bus.$emit(‘tab‘,-1);

然后你也可以随时提取

this.$root.Bus.$on(‘tab‘,(data)=>{
    console.log(data);
})

你可以理解为全局变量,但是由于设置变量的地方比较随意,然后用的多或者是数据量大的话不利于管理。

vuex

于是这时候vuex出来了。

先介绍一下vuex中几个关键点,这张图介绍了vuex的处理机制。

state:既然vuex是用来储存数据的,那么我们的储存地点就是这里。

mutations:对数据的处理都是在这里进行。

actions:专门用来提交mutations的。

getters:获得到state上的数据的。

所以总的来说就是建立一个state,然后调用actions来提交mutations处理state中的数据,最后用getters得到state中的数据。

至于为什么要用actions来提交mutations处理state中的数据,原因是mutation 必须是同步函数,所以通过actions来调用mutations

首先npm install vuex一下,然后在src里新建一个store的文件夹,用来写vuex的文件,里面创建一个index.js,然后在main.js引入你创建的index.js并在new Vue中声明一下你引入的index文件。

import store from ‘./store/index‘

new Vue({// 把 store 对象提供给 “store” 选项,这可以把 store 的实例注入所有的子组件
  store,
  el: ‘#app‘,
  router,
  template: ‘<App/>‘,
  components: { App }
})

然后你可以在index里面写你的vuex文件了

import Vue from ‘vue‘
import Vuex from ‘vuex‘
Vue.use(Vuex);
//储存
const state = {
  i: 100
};
//处理state
const mutations = {
  ADD(state) {
    state.i++;
  }
};
//提交mutations
const actions = {
  add : function ({commit, state}) {
    commit(ADD)
  }
}
//获得state
const getters = {
  getdata : state => state.notes.i
}
// 挂载
export default new Vuex.Store({
  state,
  mutations,
  actions,
  getters
})

然后你在组件中可以调用getters获得对应的值

this.$store.getters.getdata

然后你可以在组件中调用actions

this.$store.dispatch(‘add‘)

以上是对vuex的最简单的一个demo的介绍

然后个人看到了几个比较好的简单的项目可以看看

https://github.com/ToWorkit/VUEX

https://github.com/coligo-io/notes-app-vuejs-vuex

还有的是如果你在actions和mutations中要传递值的话可以

//调用actions时传值
store.dispatch(‘add‘, {
  data: 10
})
//调用mutations时传值
store.commit(‘increment‘, {
   data: 10
})

最后还有一个module讲一下,如果你的Vuex有两个模块要储存的话你可以通过这种方式储存

const moduleA = {
  state: { ... },
  mutations: { ... },
  actions: { ... },
  getters: { ... }
}

const moduleB = {
  state: { ... },
  mutations: { ... },
  actions: { ... }
}

const store = new Vuex.Store({
  modules: {
    a: moduleA,
    b: moduleB
  }
})

store.state.a // -> moduleA 的状态
store.state.b // -> moduleB 的状态
时间: 2024-08-01 17:14:48

vue的挖坑和爬坑之vuex的简单入门的相关文章

vue的挖坑和爬坑之css背景图样式终极解决方法

原问题 #wrapper{ width:100%; height:100%; position:fixed; background-image:url(./img/open_bg.jpg) } 在.vue文件中的CSS样式中,使用背景图 在webpack打包后,路径不对,怎么办呢? 回答 如果你用了vue-cil,那么在build目录下找到utils.js中的ExtractTextPlugin.extract({}),里面添加下面这个属性就完美解决了publicPath: '../../' 解释

Vue 爬坑之路(四)—— 与 Vuex 的第一次接触

在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用  props 或者 $emit 等方式 http://www.cnblogs.com/wisewrong/p/6266038.html 但是如果是大型项目,很多时候都需要在子组件之间传递数据,使用之前的方式就不太方便.Vue 的状态管理工具 Vuex 完美的解决了这个问题. 一.安装并引入 Vuex 项目结构: 首先使用 npm 安装 Vuex cnpm install vuex -S 然后在 main.js 中引入

vue 爬坑之路---can&#39;t resolve &#39;sass-loader&#39;

环境设置好以后 本以为可以开心的写代码了, 谁料到如下报错,大概意思就是不能编译 sass-loader 这个玩意. 那怎么办?? 安装依赖,不然能怎么办? 第一个依赖: npm install sass-loader 第二个依赖: npm install node-sass 这样安装了之后,然后npm run dev  ,世界一片祥和~ vue 爬坑之路---can't resolve 'sass-loader' 原文地址:https://www.cnblogs.com/liuguoying/

微信小程序爬坑日记

新公司上手小程序.30天,从入门到现在,还没放弃... 虽然小程序发布出来快一年了,爬坑的兄弟们大多把坑都踩平了.而我一直停留在"Hello World"的学习阶段.一来没项目,只有项目才是实践学习的根本:二来刚出来,总是有很多坑.爬坑总是痛并快乐着. 再多的借口,产品项目需求拍在桌前,都得缴械投降.不要怂撸起袖子,就是干. 初识小程序 微信推出小程序,想要实现即开即用,用完即走的用户体验.免去APP下载安装繁琐的流程.听起来像谷歌推出的PWA,不过PWA普及到国内还有段时间.而小程序

VueRouter爬坑第四篇-命名路由、编程式导航

VueRouter系列的文章示例编写时,项目是使用vue-cli脚手架搭建. 项目搭建的步骤和项目目录专门写了一篇文章:点击这里进行传送 后续VueRouter系列的文章的示例编写均基于该项目环境.  VueRouter系列文章链接 <VueRouter爬坑第一篇-简单实践> <VueRouter爬坑第二篇-动态路由> <VueRouter爬坑第三篇-嵌套路由> <VueRouter爬坑第四篇-命名路由.编程式导航>  阅读目录 一.前言 二.命名路由 三.

安卓易学,爬坑不易——腾讯老司机的RecyclerView局部刷新爬坑之路

针对手游的性能优化,腾讯WeTest平台的Cube工具提供了基本所有相关指标的检测,为手游进行最高效和准确的测试服务,不断改善玩家的体验.目前功能还在免费开放中. 点击地址:http://wetest.qq.com/cube立即体验! 作者:Hoolly,腾讯移动客户端开发工程师. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处 WeTest导读 安卓开发者都知道,RecyclerView比ListView要灵活的多,但不可否认的里面的坑也同样埋了不少人.下面让我们看看腾讯开发工程

AngularJs (二) 搭建Deployd 服务爬坑

Deployd 爬坑 按照书上的教程,介绍Deployd 这个东东,首先进入其deployd.com/网页,发现这个东东着实厉害. THE SIMPLEST WAY TO BUILD AN API 按照文档说明我的电脑是windows系统,按照docs说明进入下载,无奈我网络不是很给力,老是不能直接在网站上下载,看到它提供的github下载,下载下来自己新手一个,又不懂怎么安装,顿时就是感觉学习新东西好难啊,自信心顿时消失了一半,还好这个东东是依赖nodeJs和MongoDB的,继续翻阅文档ht

React爬坑秘籍(一)——提升渲染性能

React爬坑秘籍(一)——提升渲染性能 ##前言 来到腾讯实习后,有幸八月份开始了腾讯办公助手PC端的开发.因为办公助手主推的是移动端,所以导师也是大胆的让我们实习生来技术选型并开发,他来做code review.之前也学习过React,当然也是非常合适这一次的开发. 我会梳理这一个月来,自己对架构的思考过程和踩过的坑.当然这一切都不一定是最佳的,所以希望能有更多的建议和讨论. 例子所需库:Webpack.React.Immutable.其中Webpack用于前端构建,如果不清楚的同学可以看这

Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

前言 开发做得久了,总免不了会遇到各种坑.而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页面底部有一个EditText,如果不做任何处理,那么在软键盘弹出的时候,就有可能会挡住EditText.对于这种情况的处理其实很简单,只需要在AndroidManifest文件中对activity设置:android:windowSoftInputMode的值adjustPan或者adjustResi