问题标签 [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.

0 投票
1 回答
88 浏览

vue.js - 如何通过 Vuex 中的 Mutation 推送到数组?

在我写这个问题的时候,我找到了解决问题的方法,但即便如此,我还是决定与社区分享,看看我是否以最好的方式解决了问题。

鉴于我的商店的摘要:

我这样称呼这个动作:

这给了我以下错误:

  • books是通过 a 获得的对象v-for,包含 id、title、author、thumbnail 和 ISBN 等属性。

我已经检查过这个解决方案:Push to vuex store array not working in VueJS。这正是我尝试过的,但我得到了上述错误。

我是如何解决问题的:

我注意到该book对象作为代理对象进入函数。考虑到这一点,我将代理对象转换为常规对象,如下所示:

为什么会出现问题?

我承认我仍然不明白为什么会出现问题。book是通过 获得v-forbooksbooks由 Google Books API 查询组装而成。查询是使用完成的axios.get().then()

已经返回给console.log(this.books)我一个代理对象,我承认我不知道这是否是预期的行为以及是否应该尝试更改它。

无论如何问题都解决了,但如果有人有任何不同的方法,我会很乐意学习新的东西。


编辑:更多代码

我决定编辑问题以显示如何books生成和填充。

0 投票
0 回答
64 浏览

typescript - 无法在 TypeScript 项目中使用 Vuex@next 创建商店

我目前正在开发 Vue 3 + TypeScript 项目。我想使用 Vuex 进行简单的登录管理。但是当我创建时store.ts,我收到了这个错误:

我的store.ts样子是这样的:

我尝试过使用 Vuex@3 和 Vuex@next(又名 Vuex@4)。两者都有这个错误。我还尝试使用以下方法清除缓存:

...并重新安装所有节点模块。包括安装 Vuex:

准确地说,我也使用过这个:

我总是遇到同样的错误。

我的package.json

默认值,vue-cli main.ts

0 投票
0 回答
12 浏览

vuex - 突变中的 Vuex 令牌未定义

我正在尝试创建 vuex 商店系统,但遇到了问题。在 Action.js 中,我可以 console.log 并获取令牌,但在 mutation.js 中我得到未定义。

动作.js

突变.js

getters.js

另外,我在我的组件中使用了 mapGetters。

0 投票
2 回答
50 浏览

javascript - 组件中未定义使用 api 调用填充的 Vuex4 状态

请告诉我我对使用 Vuex 还是很陌生,还不太了解。我正在为 IndexedDB 使用带有 localforage 包的 Vuex4。

我的 Vuex 商店如下:

我在我的 App.vue 中分派操作,如下所示:

现在的问题是,如果我在模板部分的 Login.vue 组件中呈现状态,如下所示:

它显示了正确的数据,但是如果我尝试在我的组件的脚本部分中使用它做一些事情,例如尝试打印出来:

我收到未定义的消息。

我在这里想念什么?这里最好的方法是什么?我需要为它创建吸气剂吗?创建一个承诺?我的大脑被炸了......任何帮助至少将我指向正确的方向表示赞赏!

0 投票
0 回答
30 浏览

vue.js - 在使用 mocha 进行单元测试期间,无法使用 vue3.2 中的 setup 标签加载存储 VueX 4

我目前正在使用 mochajs 为项目编写单元测试

我在用着

我的商店在商店文件夹中,我有一个 index.js 文件,其中导入了我的所有模块,我用它们创建了一个商店,最后我像这样导出它

问题是如果我在组件文件夹中有一个看起来像这样的组件

你可以注意到我使用的是setup标签而不是 setup 方法

如果我把在我的单元测试文件中

我会收到这个错误

我也尝试创建一个新商店并像这样的插件一样传递它,但我遇到了同样的错误

0 投票
1 回答
32 浏览

typescript - 提交后,变量仍然是反应性的

我正在尝试提交一项新任务。

预期的结果应该是 'created task with title' 但标题为空,因为 'formData' 仍然是响应式的。

这是代码示例:

我做错了什么?

0 投票
0 回答
17 浏览

design-patterns - Vuex:单个加载多个数据集

在我的 Vue 项目中,有一些参考数据,很少更改(付款方式、预定义的服务类型等)。我可以有条件地加载它们

但我讨厌复制粘贴该代码(你看,它是一个原型,我必须为所有操作添加错误处理)。

我怎样才能制造一些像这样的好工厂

?

0 投票
1 回答
31 浏览

javascript - 承诺履行时的 Vuejs3/Vuex4 条件渲染

我有自定义对象来保存充满数据的子对象。子对象的所有属性都使用空值启动,因此可以引用对象并从远程源填充它们的属性。这会创建一个延迟加载设置。

这段代码将被极度精简,但所有相关的都应该在这里:

孩子看起来像:

在 Vuex 4 中,我将这些集合作为商店中“AppData”对象的属性:

这个想法是,每当将 aChild添加到 aCollection时,集合loaded属性将是 false,直到所有Child加载器承诺解决。这一切都完美地执行......除了loaded布尔不是反应性的。

现在,我Promise.all在每个组件的 Created 函数中都有一个,一旦组件所需的所有对象都解决了它们的“加载器”承诺,就会将该组件标记为“已加载”。这绝对有效,但并不理想,因为不同的数据将在不同的时间可用,有时屏幕上会同时显示数百个或更多这些类。我想要完成的是:

所以我有两个关于克服这个问题的想法,其中任何一个都会很棒:

  • VueJS3 不再需要 Vue.set(),因为 Proxies。那么我如何让loaded这里的布尔值反应呢?或者更具体地说,我在做什么阻止它工作?

  • 或者,有没有一种实用的方法可以loader直接在模板中使用 Promise?

0 投票
1 回答
28 浏览

typescript - 重命名Vuex模块认为旧的还在

我实际上只是试图重命名我的模块,但我得到了一个毫无意义的错误。我有一个名为“速度”的模块。我重命名了它以及所有对“团队”的引用。现在我收到这个错误 Error: Missing module "speed" for path "speed/".

老的:

新的:

模块内部的状态、getter、动作等是不变的。

我重新启动了我的服务,重新启动了我的 IDE,重新启动了我的计算机。没有变化。

我正在使用“webpack”:“^5.40.0”、“vuex”:“^4.0.2”、“vue”:“^3.1.1”、“typescript”:“^4.3.4”

从字面上看,“速度”这个词在我的任何文件中都没有。

0 投票
1 回答
22 浏览

vue.js - 如何在 NuxtI18n 中渲染动态翻译?

我想根据 2 种语言的翻译来呈现列表,一个是阿拉伯语列表,一个是英语列表,我该怎么做?

我想使用这些列表,例如

我想将这些列表添加到 i18n json5 中,以便可以将其呈现为 v-autocomplete

我想根据 i18n json5 的翻译将数据传递给:items?我该怎么做?

谢谢