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 相关文章推荐
用javascript实现页面打印的三种方法
Mar 05 Javascript
Discuz! 6.1_jQuery兼容问题
Sep 23 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
Sep 21 Javascript
Document:getElementsByName()使用方法及示例
Oct 28 Javascript
js将json格式内容转换成对象的方法
Nov 01 Javascript
window.open打开页面居中显示的示例代码
Dec 27 Javascript
在JavaScript中构建ArrayList示例代码
Sep 17 Javascript
js实现温度计时间样式代码分享
Aug 21 Javascript
JavaScript中子对象访问父对象的方式详解
Sep 01 Javascript
JS实现关键词高亮显示正则匹配
Jun 22 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
使用kbone解决Vue项目同时支持小程序问题
Nov 08 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
深入解析php之apc
2013/05/15 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
PHP之预定义接口详解
2015/07/29 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
提高代码性能技巧谈—以创建千行表格为例
2006/07/01 Javascript
限制复选框的最大可选数
2006/07/01 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
JavaScript 数组详解
2013/10/10 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Django model select的多种用法详解
2019/07/16 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
python中p-value的实现方式
2019/12/16 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
大学生个人自我鉴定
2013/12/03 职场文书
网络程序员自荐信
2014/01/25 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
免职通知
2015/04/23 职场文书
离婚代理词范文
2015/05/23 职场文书
法律意见书范文
2015/06/04 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python