vuex中初始状态存储在什么属性中(怎样使用vuex项目结构目录与配置)

本文目录
怎样使用vuex项目结构目录与配置
这次给大家带来怎样使用vuex项目结构目录与配置,使用vuex项目结构目录与配置的注意事项有哪些,下面就是实战案例,一起来看一下。
vuex需要遵守的规则:
一、应用层级的状态应该集中到单个 store 对象中。
二、提交 mutation 是更改状态的唯一方法,并且这个过程是同步的。
三、异步逻辑都应该封装到 action 里面。
文件目录结构
文件之间的关系:
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相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
vue-router懒加载优化加载速度
JS使用createElement()动态添加HTML
vuex原理
vuex原理是VUEX很单一,store对象只要注册到main.js里面,只要被vue注册之后,vue里面所有层级关系的组件都可以使用。
使用状态去管理和操作DOM,改变UI,不是使用过去的那种直接操作DOM的方式。所以说State是VUEX里面的一个核心的概念,在VUEX里面也是一个核心的概念。
State是唯一的数据源,也就是它是唯一的载体,需要把任何一个需要抽取出来的变量,都要放到State里面去来进行管理,那么在任何一个页面都可以取到它。模板里面用到count一个属性,可以看到它里面有个computed的计算属性,当我们里面的变量发生变化了以后,它都会实时的进行计算,最后来渲染视图。
扩展资料
Vuex有以下几个部分构成:
1)state
state是存储的单一状态,是存储的基本数据。
2)Getters
getters是store的计算属性,对state的加工,是派生出来的数据。就像computed计算属性一样,getter返回的值会根据它的依赖被缓存起来,且只有当它的依赖值发生改变才会被重新计算。
3)Mutations
mutations提交更改数据,使用store.commit方法更改state存储的状态。(mutations同步函数)
4)Actions
actions像一个装饰器,提交mutation,而不是直接变更状态。(actions可以包含任何异步操作)
5)Module
Module是store分割的模块,每个模块拥有自己的state、getters、mutations、actions。
如何使用vuex操作state对象
这次给大家带来如何使用vuex操作state对象,使用vuex操作state对象的注意事项有哪些,下面就是实战案例,一起来看一下。
Vuex是什么?
VueX 是一个专门为 Vue.js 应用设计的状态管理架构,统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data )。
Vue有五个核心概念,state, getters, mutations, actions, modules。
总结
state =》 基本数据
getters =》 从基本数据派生的数据
mutations =》 提交更改数据的方法,同步!
actions =》 像一个装饰器,包裹mutations,使之可以异步。
modules =》 模块化Vuex
State
state即Vuex中的基本数据!
单一状态树
Vuex使用单一状态树,即用一个对象就包含了全部的状态数据。state作为构造器选项,定义了所有我们需要的基本状态参数。
在Vue组件中获得Vuex属性
?我们可以通过Vue的Computed获得Vuex的state,如下:
const store = new Vuex.Store({
state: {
count:0
}
})
const app = new Vue({
//..
store,
computed: {
count: function(){
return this.$store.state.count
}
},
//..
})下面看下vuex操作state对象的实例代码
每当 store.state.count 变化的时候, 都会重新求取计算属性,并且触发更新相关联的 DOM。
每一个 Vuex 应用的核心就是 store(仓库)。
引用官方文档的两句话描述下vuex:
1,Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
2,你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。
使用vuex里的状态
1,在根组件中引入store,那么子组件就可以通过this.$store.state.数据名字得到这个全局属性了。
我用的vue-cli创建的项目,App.vue就是根组件
App.vue的代码
《template》
《p id="app"》
《h1》{{$store.state.count}}《/h1》
《router-view/》
《/p》
《/template》
《script》
import store from ’@/vuex/store’;
export default {
name: ’App’,
store
}
《/script》
《style》
《/style》在component文件夹下Count.vue代码
《template》
《p》
《h3》{{this.$store.state.count}}《/h3》
《/p》
《/template》
《script》
export default {
name:’count’,
}
《/script》
《style scoped》
《/style》store.js的代码
import Vue from ’vue’
import Vuex from ’vuex’
Vue.use(Vuex);
const state = {
count: 1
}
export default new Vuex.Store({
state,
})2,通过mapState辅助函数得到全局属性
这种方式的好处是直接通过属性名就可以使用得到属性值了。
将Component.vue的代码进行改变
《template》
《p》
《h3》{{this.$store.state.count}}--{{count}}《/h3》
《h4》{{index2}}《/h4》
《/p》
《/template》
《script》
import { mapState,mapMutations,mapGetters } from "vuex";
export default {
name:’count’,
data:function(){
return {
index:10
}
},
//通过对象展开运算符vuex里的属性可以与组件局部属性混用。
computed:{...mapState(),
index2() {
return this.index+30;
}
} ,
}
《/script》
《style scoped》
《/style》相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
怎样对vue文件进行解析
如何优化Vue

更多文章:
tcpip协议内核(tcpip协议详解 tcpip协议具体包括哪些内容)
2025年10月17日 21:00
python切片举例(如何使用Python中的变量对列表进行切片)
2026年9月9日 06:00
structured reviewing翻译(紧急求助,英语高手帮忙翻译一下这篇英文,急用谢谢不要翻译软件的)
2025年5月25日 07:45
vlookup函数怎么用来查找(excel中vlookup怎么查找)
2025年7月10日 11:15
如何使用通配符(在word中查找、定位和替换,怎样使用通配符)
2025年8月5日 04:00
职业生涯规划书ppt模板免费下载(大学生职业生涯规划ppt模板)
2025年11月25日 13:30
手机context修复是啥(修复selinux contexts什么意思)
2025年7月24日 18:00
移动智能电子学生证怎么添加号码(智慧校园电子学生证如何添加号码)
2026年7月1日 10:45












