问题标签 [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.
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-for
的books
。
books
由 Google Books API 查询组装而成。查询是使用完成的axios.get().then()
已经返回给console.log(this.books)
我一个代理对象,我承认我不知道这是否是预期的行为以及是否应该尝试更改它。
无论如何问题都解决了,但如果有人有任何不同的方法,我会很乐意学习新的东西。
编辑:更多代码
我决定编辑问题以显示如何books
生成和填充。
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
:
vuex - 突变中的 Vuex 令牌未定义
我正在尝试创建 vuex 商店系统,但遇到了问题。在 Action.js 中,我可以 console.log 并获取令牌,但在 mutation.js 中我得到未定义。
动作.js
突变.js
getters.js
另外,我在我的组件中使用了 mapGetters。
javascript - 组件中未定义使用 api 调用填充的 Vuex4 状态
请告诉我我对使用 Vuex 还是很陌生,还不太了解。我正在为 IndexedDB 使用带有 localforage 包的 Vuex4。
我的 Vuex 商店如下:
我在我的 App.vue 中分派操作,如下所示:
现在的问题是,如果我在模板部分的 Login.vue 组件中呈现状态,如下所示:
它显示了正确的数据,但是如果我尝试在我的组件的脚本部分中使用它做一些事情,例如尝试打印出来:
我收到未定义的消息。
我在这里想念什么?这里最好的方法是什么?我需要为它创建吸气剂吗?创建一个承诺?我的大脑被炸了......任何帮助至少将我指向正确的方向表示赞赏!
vue.js - 在使用 mocha 进行单元测试期间,无法使用 vue3.2 中的 setup 标签加载存储 VueX 4
我目前正在使用 mochajs 为项目编写单元测试
我在用着
我的商店在商店文件夹中,我有一个 index.js 文件,其中导入了我的所有模块,我用它们创建了一个商店,最后我像这样导出它
问题是如果我在组件文件夹中有一个看起来像这样的组件
你可以注意到我使用的是setup标签而不是 setup 方法
如果我把在我的单元测试文件中
我会收到这个错误
我也尝试创建一个新商店并像这样的插件一样传递它,但我遇到了同样的错误
typescript - 提交后,变量仍然是反应性的
我正在尝试提交一项新任务。
预期的结果应该是 'created task with title' 但标题为空,因为 'formData' 仍然是响应式的。
这是代码示例:
我做错了什么?
design-patterns - Vuex:单个加载多个数据集
在我的 Vue 项目中,有一些参考数据,很少更改(付款方式、预定义的服务类型等)。我可以有条件地加载它们
但我讨厌复制粘贴该代码(你看,它是一个原型,我必须为所有操作添加错误处理)。
我怎样才能制造一些像这样的好工厂
?
javascript - 承诺履行时的 Vuejs3/Vuex4 条件渲染
我有自定义对象来保存充满数据的子对象。子对象的所有属性都使用空值启动,因此可以引用对象并从远程源填充它们的属性。这会创建一个延迟加载设置。
这段代码将被极度精简,但所有相关的都应该在这里:
孩子看起来像:
在 Vuex 4 中,我将这些集合作为商店中“AppData”对象的属性:
这个想法是,每当将 aChild
添加到 aCollection
时,集合loaded
属性将是 false,直到所有Child
加载器承诺解决。这一切都完美地执行......除了loaded
布尔不是反应性的。
现在,我Promise.all
在每个组件的 Created 函数中都有一个,一旦组件所需的所有对象都解决了它们的“加载器”承诺,就会将该组件标记为“已加载”。这绝对有效,但并不理想,因为不同的数据将在不同的时间可用,有时屏幕上会同时显示数百个或更多这些类。我想要完成的是:
所以我有两个关于克服这个问题的想法,其中任何一个都会很棒:
VueJS3 不再需要 Vue.set(),因为 Proxies。那么我如何让
loaded
这里的布尔值反应呢?或者更具体地说,我在做什么阻止它工作?或者,有没有一种实用的方法可以
loader
直接在模板中使用 Promise?
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”
从字面上看,“速度”这个词在我的任何文件中都没有。
vue.js - 如何在 NuxtI18n 中渲染动态翻译?
我想根据 2 种语言的翻译来呈现列表,一个是阿拉伯语列表,一个是英语列表,我该怎么做?
我想使用这些列表,例如
我想将这些列表添加到 i18n json5 中,以便可以将其呈现为 v-autocomplete
我想根据 i18n json5 的翻译将数据传递给:items?我该怎么做?
谢谢