首页
学习
活动
专区
圈层
工具
发布

vuex中a模块访问b模块的state或getters

随着项目的复杂度提高,vuex肯定也会越来越多,有些相互有依赖关系的,我们就可能会相互使用,所以就会出现中a模块的getters去访问b模块的getters或state的情况。...以我真实情况举例,我有一个system模块:getters有一个MiniSoftShareImageUrl属性,作为默认的分享图。...当我在分享帖子时,如果帖子没有设置封面则就需要使用默认的封面,下面是我post模块加载system模块的getters的使用方式:代码:share_cover(state, getters, rootState...:return rootState.system.config 你在编程过程中,遇到过哪些让你头疼的问题?...你是如何解决的?欢迎在评论区分享你的经验!感谢你的阅读!如果你觉得这篇文章对你有帮助,请点赞并分享给需要的朋友。如果你有任何问题,欢迎在评论区提问。

30100

【说站】Vuex中状态管理器的使用详解

二、什么时候使用Vuex 不适用场景:小型简单应用,用 Vuex 是繁琐冗余的,更适合使用简单的store模式 适用场景:构建一个中大型单页应用,可能会考虑如何更好地在组件外部管理状态,即多个组件共享状态...流程:View -> Actions -> Mutations -> State -> View 1、state 1) vuex 管理的状态对象 2) 它应该是唯一的 const state = {...$store.getters.xxx const getters ={xxx(state) {return ...}} 5、 modules 1) 包含多个 module:store的子模块,为了开发大型项目... =25}},/*   更改 Vuex 的 store 中的状态的唯一方法是提交 mutation,并且Mutation 必须是同步函数   在sotre.js中定义mutations对象,该对象中有两个方法...$store.dispatch('subCountAsyn')}   }} 6、在App.vue中导入Home.vue 7、运行效果: 五、vuex中各种辅助函数的用法,可以使我们更加方便的运用

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一次完整的源码阅读过程

    状态,但getters、mutations等方法暂未注册 this....指向 Module ; 否则就跳到第3步 判断当前模块不是根模块,就通过 get 函数找到当前模块的父模块,然后调用父模块中的 addChild 方法将当前模块添加到子模块中 最后再判断当前模块是否还有嵌套的模块...自然是等模块全部都收集完毕以后才进行的操作,因为 vuex 中的嵌套模块可能会存在命名空间 namespaced 3.2 注册模块 到此为止,各个模块的类都创建好了,那么继续回到 ...._modulesNamespaceMap 中,便于之后的辅助函数可以调用(这里还未提到辅助函数,可以先不管,到时候回头来看) 3.2.1 注册模块的state // 如果不是根模块,将当前模块的state...和 getters ,后2个分别表示根模块的 state 和 getters 所以我们在使用 Vuex 时,调用子模块的 getters 时是这样的: const store = Vuex.Store

    3.1K10

    分享一次完整的源码阅读过程

    状态,但getters、mutations等方法暂未注册 this....this.root 指向 Module ; 否则就跳到第3步 判断当前模块不是根模块,就通过 get 函数找到当前模块的父模块,然后调用父模块中的 addChild 方法将当前模块添加到子模块中...自然是等模块全部都收集完毕以后才进行的操作,因为 vuex 中的嵌套模块可能会存在命名空间 namespaced 3.2 注册模块 到此为止,各个模块的类都创建好了,那么继续回到 ...._modulesNamespaceMap 中,便于之后的辅助函数可以调用(这里还未提到辅助函数,可以先不管,到时候回头来看) 3.2.1 注册模块的state // 如果不是根模块,将当前模块的state...和 getters ,后2个分别表示根模块的 state 和 getters 所以我们在使用 Vuex 时,调用子模块的 getters 时是这样的: const store = Vuex.Store

    2K40

    分享一次完整的源码阅读过程

    指向 Module ; 否则就跳到第3步 判断当前模块不是根模块,就通过 get 函数找到当前模块的父模块,然后调用父模块中的 addChild 方法将当前模块添加到子模块中 最后再判断当前模块是否还有嵌套的模块...自然是等模块全部都收集完毕以后才进行的操作,因为 vuex 中的嵌套模块可能会存在命名空间 namespaced 3.2 注册模块 到此为止,各个模块的类都创建好了,那么继续回到 ...._modulesNamespaceMap中,便于之后的辅助函数可以调用(这里还未提到辅助函数,可以先不管,到时候回头来看) 3.2.1 注册模块的state // 如果不是根模块,将当前模块的state...同样的,从这段代码中我们也可以知道了为什么平时在获取子模块上 state 的属性时,是通过 this....和 getters ,后2个分别表示根模块的 state 和 getters 所以我们在使用 Vuex 时,调用子模块的 getters 时是这样的: const store = Vuex.Store

    1.7K20

    Vuex中的核心方法

    Vuex中的核心方法 Vuex是一个专为Vue.js应用程序开发的状态管理模式,其采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。...在Vue组件中获得Vuex状态 从store实例中读取状态最简单的方法就是在计算属性中返回某个状态,由于Vuex的状态存储是响应式的,所以在这里每当store.state.count变化的时候,都会重新求取计算属性...(提交荷载在大多数情况下应该是一个对象),提交荷载也可以省略的。...Mutation必须是同步函数 一条重要的原则就是mutation必须是同步函数,假如我们正在debug一个app并且观察devtool中的mutation日志,每一条mutation被记录,devtools...模块动态注册功能使得其他Vue插件可以通过在store中附加新模块的方式来使用Vuex管理状态。

    2.5K40

    分享一次完整的源码阅读过程

    状态,但getters、mutations等方法暂未注册 this....指向 Module ; 否则就跳到第3步 判断当前模块不是根模块,就通过 get 函数找到当前模块的父模块,然后调用父模块中的 addChild 方法将当前模块添加到子模块中 最后再判断当前模块是否还有嵌套的模块...自然是等模块全部都收集完毕以后才进行的操作,因为 vuex 中的嵌套模块可能会存在命名空间 namespaced 3.2 注册模块 到此为止,各个模块的类都创建好了,那么继续回到 ...._modulesNamespaceMap 中,便于之后的辅助函数可以调用(这里还未提到辅助函数,可以先不管,到时候回头来看) 3.2.1 注册模块的state // 如果不是根模块,将当前模块的state...和 getters ,后2个分别表示根模块的 state 和 getters 所以我们在使用 Vuex 时,调用子模块的 getters 时是这样的: const store = Vuex.Store

    2.1K10

    vuex 使用文档

    npm install vuex --save 在一个模块化的打包系统中,您必须显式地通过Vue.use() 来安装Vuex。   ...由于Vuex的状态存储是响应式的,从store 实例中读取状态最简单的方法     就是在计算属性中返回某个状态。     ...    既然Vuex的store 中的状态是响应式的,那么当我们变更状态时,监视状态的vue更新 ,这也意味值Vue 中的mutation 也需要与使用 Vue 一样遵守一些注意事项。       ...Vuex 允许我们将store 分割到模块。每一个模块都有自己的state, mutation,action, getters, 甚至是嵌套子模块从上到下进行类似的分割。       ...如果你的 store 文件太大,           只需将 action、mutation、和 getters 分割到单独的文件           对于大型应用,我们会希望把 Vuex 相关代码分割到模块中

    1.9K100

    Vuex中的核心方法

    Vuex中的核心方法 Vuex是一个专为Vue.js应用程序开发的状态管理模式,其采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。...在Vue组件中获得Vuex状态 从store实例中读取状态最简单的方法就是在计算属性中返回某个状态,由于Vuex的状态存储是响应式的,所以在这里每当store.state.count变化的时候,都会重新求取计算属性...(提交荷载在大多数情况下应该是一个对象),提交荷载也可以省略的。...Mutation必须是同步函数 一条重要的原则就是mutation必须是同步函数,假如我们正在debug一个app并且观察devtool中的mutation日志,每一条mutation被记录,devtools...模块动态注册功能使得其他Vue插件可以通过在store中附加新模块的方式来使用Vuex管理状态。

    2.3K00

    Vuex模块化 深入浅出超详细

    随着项目规模的增长,单一的 store 文件会变得庞大且难以管理; Vuex 的模块化是一种组织和管理应用状态的策略:,它允许将全局的状态管理分解成更小、更可管理的部分; 逻辑清晰: 将相关的状态、getter...,但其实子模块的状态,还是会挂到根级别的 state 中,属性名就是模块名,使用模块中的数据: 方式一: 直接通过模块名访问:$store.state.模块名.xxx 方式二: 通过 mapState...从vuex mapState 获取指定模块中获取的值: {{ userInfo }} 从vuex modulediy 模块getters中直接获取...数据 Vuex模块化操作:mutations, 针对所在模块,对其state 状态数据,进行修改的操作; 定义模块的 Mutations: 和正常的Vuex中定义类似,如下:定义函数给模块内修改用户对象...处理函数名', '传递参数') 方式二: 通过 mapMutations 辅助函数映射子模块:mapMutations('模块名',['处理函数名']) 推荐的方式是使用 mapMutations

    46920

    Vuex模块化 深入浅出超详细

    随着项目规模的增长,单一的 store 文件会变得庞大且难以管理;Vuex 的模块化是一种组织和管理应用状态的策略:,它允许将全局的状态管理分解成更小、更可管理的部分; 逻辑清晰: 将相关的状态、getter...,还能通过合理组织逻辑,间接提升应用的性能, 尤其是在大型应用中,通过懒加载和按需导入模块,可以进一步优化资源加载; ...模块化实现步骤:创建模块文件: 在 store 目录下创建子目录,比如 modules...mapState 获取指定模块中获取的值: {{ userInfo }} 从vuex modulediy 模块getters中直接获取 Vuex模块化操作:mutations, 针对所在模块,对其state 状态数据,进行修改的操作;定义模块的 Mutations: 和正常的Vuex中定义类似,如下:定义函数给模块内修改用户对象age...', '传递参数') 方式二: 通过 mapMutations 辅助函数映射子模块:mapMutations('模块名',['处理函数名']) 推荐的方式是使用 mapMutations 辅助函数,它可以帮助你将模块的

    31510

    Vue3学习笔记(七)—— 状态管理、Vuex、Pinia

    存储在 Vuex 中的数据和 Vue 实例中的 data 遵循相同的规则,例如状态对象必须是纯粹 (plain) 的。...必须是同步的(异步逻辑在action中写) 2.6.1、Mutation 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。...但如果你不喜欢,你完全可以不这样做。 2.6.5、Mutation 必须是同步函数 一条重要的原则就是要记住 mutation 必须是同步函数。为什么?...然而,在上面的例子中 mutation 中的异步函数中的回调让这不可能完成:因为当 mutation 触发的时候,回调函数还没有被调用,devtools 不知道什么时候回调函数实际上被调用——实质上任何在回调函数中进行的状态的改变都是不可追踪的...模块动态注册功能使得其他 Vue 插件可以通过在 store 中附加新模块的方式来使用 Vuex 管理状态。

    4.8K10

    Vuex3.x、Vuex4.x状态管理器学习笔记

    5.state(状态/数据) 由于 Vuex 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态,每当 store.state.count 变化的时候, 都会重新求取计算属性...同样的mapGetters 辅助函数可以将 store 中的 getter 映射到局部计算属性: 7.mutation(事件,由commit触发) 更改 Vuex 的 store 中的状态的唯一方法是提交...Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的事件类型 (type)和一个回调函数 (handler)。...一条重要的原则就是要记住 mutation 必须是同步函数。...细节总结 默认情况下,模块内部的 action 和 mutation 仍然是注册在全局命名空间(在Vuex对象上面,而不是模块对象)的——这样使得多个模块能够对同一个 action 或 mutation

    1.9K20

    Vue项目搭建与开发(四): Vuex使用

    什么是Vuex 根据官方的说法是Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。...官方链接:vuex.vuejs.org/ 从中我们可以关注到,这应该是一个关于状态管理的工具,简单的理解就是我们的数据状态该怎么变化,如何控制,可以通过Vuex来控制。...比如我们的登录状态、还有一些组件需要用到的data,如果通过仅通过组件间互相传值,一旦项目变大,非常的不好管理。引入Vuex,我们就只需要把这些值定义在Vuex中,即可在整个Vue项目的组件中使用。...Vuex使用方式 在Vuex里我们主要要学会使用store,即这是一个仓库,它包含着我们应用的大部分状态,Vuex 的状态存储是响应式的。...并且更改 Vuex 的 store 中的状态的唯一方法是提交 mutation,这是重点,同时 **mutation 必须是同步函数,**要记住 mutations: { changeNewName

    63610

    了解Vuex状态管理模式的理解强化指南

    它是Vue的状态管理模式,在使用vue的时候,需要在vue中各个组件之间传递值是很痛苦的,在vue中我们可以使用vuex来保存我们需要管理的状态值,值一旦被改变,所有引用该值的地方就会自动更新。...// -> 1 mapGetters 辅助函数是将 store 中的 getter 映射到局部计算属性 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation mutations:...Vuex 中的 mutation ,每个 mutation,事件类型 (type) 和 一个 回调函数 (handler) Action 提交的是 mutation,不是直接变更状态,可以包含任意异步操作...Vuex 的状态存储是响应式的,读取状态方法,即是在计算属性中返回。...$store.getters.doneTodosCount` doneCount: 'doneTodosCount' }) Vuex 的 store 中的状态的唯一方法是提交 mutation 每个

    1.4K10

    【初学者笔记】一文学会使用Vuex

    mapState了 用mapState等这种辅助函数的时候,如果组件内部的命名和vuex内的命名是一致的,可以简写成数组方式。...$store.getters.nameAndAge; } }, 结果如下: 什么是mapGetters mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性...mapMutation辅助函数仅仅是将 store 中的 mutation 映射到组件methods中 使用方法:先要导入这个辅助函数. import { mapMutation} from 'vuex...state 正常写在各自的state.js中即可 getter getter的话,他会有三个参数,第一个是模块内的 state,第二个是 模块内的 getters,第三个是根节点状态 rootState...在获取根状态下的getters不需要加模块名 store.getters.moduleA.realName //map函数的第一个参数也同样需要加模块名 computed: { //获取moduleA

    5K30
    领券