vuex 项目结构目录及一些简单配置介绍


Posted in Javascript onApril 08, 2018

首先先正经的来一段官网的"忠告":

vuex需要遵守的规则:

一、应用层级的状态应该集中到单个 store 对象中。

二、提交 mutation 是更改状态的唯一方法,并且这个过程是同步的。

三、异步逻辑都应该封装到 action 里面。

文件目录结构

vuex 项目结构目录及一些简单配置介绍

文件之间的关系:

store文件夹 - 存放vuex的系列文件

store.js - 引入vuex,设置state状态数据,引入getter、mutation和action

getter.js - 获取store内的状态

mutation.js - 更改store中状态用的函数的存储之地

action.js - 提交mutation以达到委婉地修改state状态,可异步操作

简单而又普通的写法

store.js文件:

import Vue from 'vue'
import Vuex from 'vuex'
import actions from './actions'
import mutations from './mutations'
Vue.use(Vuex)
const state = {
 a: '初始值',
 b: 'balabala...'
}
export default new Vuex.Store({
  state,
  actions,
  mutations
})

main.js文件中(从根组件注入store,就像注入router一样):

通过在根实例中注册 store 选项,该 store 实例会注入到根组件下的所有子组件中,且子组件能通过 this.$store 访问到。

import store from './store/index'
new Vue({
 el: '#app',
 router,
 store,
 ...
})

Getter.js 的简单配置( store 的计算属性,接受state为参数)

export default {
  doneTodos: state = >{
   return state.todos.filter(todo = >todo.done)
  }
}

获取(某组件的计算属性内部):

computed: {
 doneTodosCount () { 
  return this.$store.getters.doneTodosCount 
 }
}

可传参 的getter属性的简单配置

export default{

 getTodoById: (state) => (id) => { 
  return state.todos.find(todo => todo.id === id) 
 }
}

获取(某 组件的计算属性内部 ):

computed: {
 getTodoById() { 
  return this.$store.getters.getTodoById(‘参数')
 }
}

mutation.js简单配置:

export default {
  increment(state) {
   //变更状态
   state.count++
  }
}

触发(组件中)

this.$store.commit(state,payload)
actions.js简单配置:
export default{
 action (context) {
 //异步操作
  setTimeout(()=>{
   //变更状态
   context.commit('mutationFunName',value)
  })
 }
}

触发(组件的)

this.$store.dispatch('mutationFunctionName')
2018-04-07 18:13:34

总结

以上所述是小编给大家介绍的vuex 项目结构目录及一些简单配置介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery的实现原理的模拟代码 -5 Ajax
Aug 07 Javascript
jquery获取iframe中的dom对象(两种方法)
Jul 02 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
Jan 28 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
jQuery插件StickUp实现网页导航置顶
Apr 12 Javascript
RequireJS多页面应用实例分析
Jun 29 Javascript
详解webpack介绍&安装&常用命令
Jun 29 Javascript
JavaScript 中Date对象的格式化代码方法汇总
Sep 06 Javascript
关于redux-saga中take使用方法详解
Feb 27 Javascript
微信小程序云开发 搭建一个管理小程序
May 17 Javascript
使用vue制作滑动标签
Sep 21 Javascript
Vue中axios拦截器如何单独配置token
Dec 27 Javascript
JS求Number类型数组中最大元素方法
Apr 08 #Javascript
angular2模块和共享模块详解
Apr 08 #Javascript
vue下拉列表功能实例代码
Apr 08 #Javascript
详解Vue-cli webpack移动端自动化构建rem问题
Apr 07 #Javascript
vue-cli开发环境实现跨域请求的方法
Apr 07 #Javascript
Angular5给组件本身的标签添加样式class的方法
Apr 07 #Javascript
Vue实现内部组件轮播切换效果的示例代码
Apr 07 #Javascript
You might like
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
php获得当前的脚本网址
2007/12/10 PHP
php防止sql注入代码实例
2013/12/18 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
Python内置函数dir详解
2015/04/14 Python
详细解析Python当中的数据类型和变量
2015/04/25 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Python数据操作方法封装类实例
2017/06/23 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
护士见习期自我鉴定
2014/02/08 职场文书
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
房产转让协议书
2014/04/11 职场文书
六一亲子活动总结
2014/07/01 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
见习报告的格式
2014/11/04 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
微信早安问候语
2015/11/10 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL