关于vuex的学习实践笔记


Posted in Javascript onApril 05, 2017

Vuex 简介

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

例如(travel store):

import * as types from '../types'
//数据
const state = {
 travelsList: [],
 searchKey: {
  page: 0,
  limit: 20
 },
 scroll: true
}
//用户行为(可以处理异步),触发 mutations 来改变 state
const actions = {
 /**
  * 获取约跑步列表
  */
 getTravelsList({ commit }) {
  if(state.scroll) {
   commit(types.GET_TRAVELS_PAGE_NUM)
   commit(types.COM_LOADING_STATUS, true),
   commit(types.GET_TRAVELS_SCORLL_STATUS, false)
   api.TravelsList()
    .then(res => {
     console.log(res)
     commit(types.COM_LOADING_STATUS, false),
     commit(types.GET_TRAVELS_SCORLL_STATUS, true)
     commit(types.GET_TRAVELS_LIST, res)
    })
  }
 },
 /**
  * 参加
  */
 joinTravel({ commit }, id) {
 ...
 }
}
//可以过滤 state 中的数据
const getters = {
 travelsList: state => state.travelsList,
 travelListIndex: state => state.travelsList.slice(0,4)
}
//唯一能改变 state 的方法(纯函数)
const mutations = {
 [types.GET_TRAVELS_LIST](state, res) {
  if(state.searchKey.page <= 1) {
   state.travelsList = res.data
  } else {
   state.travelsList = state.travelsList.concat(res.data)
  }
 },
 [types.GET_TRAVELS_SEARCH_KEY](state, params) {
  state.searchKey = params
 },
 [types.GET_TRAVELS_PAGE_NUM](state) {
  state.searchKey['page'] += 1
 },
 [types.GET_TRAVELS_SCORLL_STATUS](state, status) {
  state.scroll = status
 }
}
//导出一个 travel store 模块
export default {
 state,
 actions,
 getters,
 mutations
}

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

Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。

你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交(commit) mutations。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

用一张图来理解一下

关于vuex的学习实践笔记

客户端(Client) -> action -> mutations -> state -> 客户端

可以看出在vuex中数据是单一流向的:视图(view)触发action,action提交(commit)到mutations,mutations改变state(数据),state的改变,相应的组件也会相应的更新。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript 从if else 到 switch case 再到抽象
Jul 17 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
JS实现完全语义化的网页选项卡效果代码
Sep 15 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
Dec 29 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
Bootstarp基本模版学习教程
Feb 01 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
Apr 12 Javascript
基于BootStrap的文本编辑器组件Summernote
Oct 27 Javascript
实例分析JS与Node.js中的事件循环
Dec 12 Javascript
深入理解Angularjs 脏值检测
Oct 12 Javascript
Postman的下载及安装教程详解
Oct 16 Javascript
JavaScript实现消消乐的源代码
Jan 12 Javascript
详解基于webpack和vue.js搭建开发环境
Apr 05 #Javascript
ionic2打包android时gradle无法下载的解决方法
Apr 05 #Javascript
使用gulp搭建本地服务器并实现模拟ajax
Apr 05 #Javascript
Vue.js render方法使用详解
Apr 05 #Javascript
self.attachevent is not a function的解决方法
Apr 04 #Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
Apr 04 #Javascript
Vue.js实战之使用Vuex + axios发送请求详解
Apr 04 #Javascript
You might like
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
Javascript继承机制详解
2017/05/30 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
What is view? why do we have view?
2012/06/22 面试题
init进程的作用
2015/08/20 面试题
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
病媒生物防治方案
2014/05/13 职场文书
团队激励口号
2014/06/06 职场文书
车间质检员岗位职责
2015/04/08 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
2015年环卫工作总结
2015/04/28 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
一年级语文教学随笔
2015/08/14 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书