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 相关文章推荐
JS简单操作select和dropdownlist实例
Nov 26 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
JavaScript动态添加style节点的方法
Jun 09 Javascript
Bootstrap精简教程
Nov 27 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
JS获取鼠标相对位置的方法
Sep 20 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
Feb 19 Javascript
Javascript中引用类型传递的知识点小结
Mar 06 Javascript
基于复选框demo(分享)
Sep 27 Javascript
微信小程序设置滚动条过程详解
Jul 25 Javascript
Vue简单实现原理详解
May 07 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
再说下636单管机
2021/03/02 无线电
php socket方式提交的post详解
2008/07/19 PHP
PHP 多进程 解决难题
2009/06/22 PHP
php无限极分类实现的两种解决方法
2013/04/28 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
DOM 事件流详解
2015/01/20 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
详谈js原型继承的一些问题
2017/09/06 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
windows上安装Anaconda和python的教程详解
2017/03/28 Python
Python中int()函数的用法浅析
2017/10/17 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
python读取xlsx的方法
2018/12/25 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
python enumerate内置函数用法总结
2020/01/07 Python
python源文件的字符编码知识点详解
2021/03/04 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
大学军训感言
2014/01/10 职场文书
银行开业庆典方案
2014/02/06 职场文书
家长通知书家长意见
2014/12/30 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书