问题标签 [vuex4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 我应该如何通过我在 vue 3 中的视图发送数据?
我对 Vue 很陌生。我安装了 Vuex 4、Vue Router 4 和 Vue 3 cli。
我正在从一个大的 json 文件中获取数据并将其放入我的 vuex 存储中。该文件由许多嵌套数组/对象构成,这些嵌套数组/对象基于“银河-有-星团-有-恒星-有-行星”等概念,每个都有自己的对象,每个对象都有很多属性。
顶层存储在 vuex 中,我有一个 GalaxyView 文件,如下所示:
第一个视图完美运行,并显示了一个全屏按钮,一旦单击,应该转到每个星团 - 这应该显示一堆星按钮,然后应该转到行星等。
我需要一种方法将被点击的特定星团/恒星/行星以及随之而来的对象数据发送到每个后续视图,以便我可以遍历并显示属性。
我尝试的第一种方法是直接使用组件并使用像这样的道具
然后在下一个视图中迭代它 - 但是它很混乱,我觉得 vue-router 路由(不是双关语)是更好和更清洁的选择。
有没有办法通过创建动态路由器链接来做到这一点,或者我应该回到使用组件/道具方式吗?
这是我的路线 atm
谢谢!
vue.js - 如何将 api 的结果与来自 Vuex 的操作一起使用
当用户登录时,我正在尝试通过 axios 检索用户的收藏夹。为此,我将 Vuejs 与 Vuex 一起使用。关于日志记录过程的所有内容都可以,但是关于收藏夹,我遗漏了一些东西,但我不知道是什么。
我store.ts
是这样的:
在我的收藏夹组件中,我有:
然后在模板中:
vue.js - 使用 Vuex 4 和 Vue 3 组合 API 从调度的操作中访问数据
在我的应用程序中,我有一个 Vuex 4 商店和一个 Vue 3 Composition Apisetup()
方法。
在商店操作中,我使用 axios 进行 api 调用以获取账单支付列表。
该getAllBills
操作不直接存在于我的Store.js
文件中,它作为一个模块存在。
然后在我的 Bill.vue 文件中,我有setup()
方法并尝试访问要在整个 Bill.vue 文件中使用的数据。
如果我从上面检查控制台.then()
res
返回未定义。如果我.then()
从billPayments
声明中删除并执行以下操作:
在控制台中我得到
当前商店:
端点正在工作,如果我使用 Postman,我的所有数据都会按预期返回,但我无法弄清楚如何使用带有组合 API 的调度操作访问该数据。
Vuex 4 文档没有提到如何实际解决访问要在同一组件中使用的数据的承诺。
typescript - Vuex 4 - 在初始化之前无法访问“商店”
我的 vuex 商店有一个小问题,在应用程序初始化期间未定义。
在 http-common.ts 文件中,应用程序初始化时未定义商店。当应用程序启动时,第一次分派用户模块操作是在我的一个组件内。
我该如何解决这个问题?访问令牌是在 beforeRoute 中设置的,我在其中使用 MSAL 登录用户,但它永远不会到达那一点。
如果我像这样在它周围添加一个 setTimeout ,它就可以工作
javascript - 为什么我不能从状态 VUEX 4 访问这个变量
我当然在没有 state.groupCrud.group 的情况下尝试过,但还是不行。我的语法是否正确。我正在使用 vuejs3,我将提供该对象的一些屏幕截图。
这是状态对象:
我从 api 获取数据是这样的:
我将它设置为这样的状态:
这就是我使用状态的方式
这是console.log(state.groupCrud);
对象
这是console.log(state.groupCrud.group)
对象
当我尝试使用 state.groupCrud.group 时,我得到一个空的代理对象,尽管该对象不是空的
typescript - 商店状态类型不适用于模块
我想将模块用于应该与 typescript 一起使用的 vuex (^4.0.2) 存储。所以我就这样开始了:
但这会产生这个错误:
“RootState”类型上不存在属性“会话”。
文档建议每个模块的状态都包含在商店的状态中并使用:
显示该模块已包含在内。
应该如何设置类型以正确反映状态?
javascript - 使用 Vue 3 和 Vuex 4 过滤对象数组并为每个对象添加一个新属性
要检索 Vue 3 组件中的对象列表,我在 Vuex 4 中使用了一个 getter,如下所示:
要检索 Vue 3 组件中的对象列表,我在 Vuex 4 中使用了一个 getter,如下所示:
您会注意到我执行了一个计算并将结果添加到一个名为 balance 的新属性中。
它完美地工作。
但我注意到在对象上添加 balance 属性也反映在 state.entries 中的对象中。
我不喜欢我的 getAccountingEntries 函数在不经历突变的情况下更改状态,尽管它似乎工作正常。
我做错了吗?有没有办法避免这种副作用?
谢谢您的帮助。
typescript - 类型 '{ 方法:{ loadItems: ActionMethod; 上不存在属性 'loadItems' }; 挂载():无效;}'
我使用模块化 vuex 商店,因为应用程序的每个模块都有自己的商店,我想执行我的 vuex 商店的动作,创建状态、突变和动作,但是当我在视图中执行动作时出现错误:属性' loadItems' 类型不存在'{方法:{ loadItems:ActionMethod;}; 挂载():无效;}
索引.vue:
存储/索引.ts:
垫片-vuex.d.ts:
vuex - 从操作调用 api 时 Vuex 状态保持未定义
我不明白 vuex 的每一个行为。
当我从组件调用 searchText 并通过操作设置tableEquipments它工作正常
但是当我从 vuex 操作中调用它时,searchText返回一个响应,但是 tableEquipments表的值保持未定义