【发布时间】:2021-10-18 11:04:42
【问题描述】:
我有一个奇怪的错误,其中一个插槽在某些未知情况下不可靠。
组件
有 3 个分层组件。
- 孙子 (headlessTable),它提供了一个名为
arrayValue的插槽。 - 孩子 (collapsableCard),它通过孙子和父母之间的插槽。
- 父级 (orderDataCard),决定为该插槽呈现链接。
问题:在加载新数据时,正在渲染子级的默认插槽 html,而不是渲染父级的链接。
数据结构(orderDetails)
- 进程(obj)
- 标记(字符串)
- 普通(obj)
- 附加参数(数组)
- 类别(字符串)
- 类型(字符串)
- 名称(字符串)
- 值(字符串)
- 附加参数(数组)
- salesOrganisation (obj)
- 发票(数组)
- invoiceAgreementId(字符串)
- paymentType(字符串)
复制
请查看additionalArguments 字段,它包含一个链接。
按 ALT+M 模拟获取新数据。现在,不是呈现链接,而是呈现该命名插槽的默认插槽 html。
可以按 ALT+J 加载原始数据,但这次没有链接。
| Initial data (ALT+J) | Loaded data (ALT+M) | Type | Equal value |
|---|---|---|---|
| mark | str | false | |
| common | common | obj | true |
| salesOrganisation | salesOrganisation | obj | true |
| invoices (empty) | invoices | arr | false |
2如何解决
- 如果您取消注释 app.js 中的第 68 行(如果您使用的是代码和框,则取消注释 App.vue 中的第 73 行),即名为
mark的字段 - 如果
invoices在 app.js 中最初不是空的 - 如果
mark在 orderDataCard 中从 html 中删除 - 如果
salesOrganisation在 orderDataCard 中从 html 中删除 - 如果
invoiceItems的 v-for 模板部分中的 html 在 orderDataCard 中为空
显然,这些不是解决方案。
注意事项
无论如何,任何字段之间都没有依赖关系或任何东西,所以我很难理解为什么会发生这种情况,我怀疑这是 vue 的一个错误。我已经为此创建了一个issue。但是,开发人员不会查看复制,因为他们认为它不是最小的 #lines > 100。只要我删除任何更有意义的行,错误就解决了,删除的代码也没有错误,所以非常令人沮丧在这方面工作。我仍然可以删除无意义的行,但这会使所有相关人员更难理解正在呈现的数据。
是否有人能够承认这是 vue 的问题并且代码不可简化,或者(我更喜欢这个)有人能够解决这个问题吗?
【问题讨论】: