作者:正好忍心_702 | 来源:互联网 | 2023-07-21 22:33
首先明确,我遇到这个问题时是v-for嵌套的情况。Vscode使用了Vetur插件。如果你遇到的相同的报错但是与我的原因不同,可以在评论区中留言,我看到后也会尽可能帮助你解决问题。
我将出现问题的代码抽象成如下结构
< template v-for = " (item1, index1) in [&#39; str1&#39; ,&#39; str2&#39; ,&#39; str3&#39; ]" > < div :key = " index1" > div> < template v-for = " (item2, index2) in [0,1,2,3,4]" > < div :key = " index2" v-if = " item===4" > div> template> template>
报错的是第二个template标签下绑定的key 这问题我在思否上提过:Vue2.0中嵌套v-for结构的第二个key为什么总是报错? 最后是我自己找到的解决办法。
乍一看,好像是eslint配置的问题,不过我想声明,埋怨并修改eslint配置问题不是我所期望的解决办法,既然eslint报错了,那么就意味着代码的写法或者风格不符合规范,而我所探寻的就是怎么写才是符合规范的。
解决办法 如果你只想关闭烦人的错误提示,很简单。在VsCode设置中搜索eslint,找到下面这个设置 关闭即可关掉错误提示。
原因探寻 但正如我所说,关掉它不是我所期待的解决方法。
那么来看正确的解决办法吧。 它是我准备在Stack Overflow上提问题时发现的已存在问题Expected v-bind directive on complex / v-for
可以看到该问题中,提问者的代码结构与我完全一致
< template v-for = " (scorecard, scorecardIndex) in scorecards" > < template v-for = " (property, propertyIndex) in properties" > < tr v-if = " scorecardIndex === 0" v-bind: key= " propertyIndex" > tr> template> < tr v-if = " scorecardIndex > 0" v-bind: key= " scorecardIndex" > tr> template>
我删掉了一些不相干的内容,留下的核心的结构。我们都是两层v-for,并且两层v-for都在template标签上。
首先key是不能在template标签上绑定的,因为它不是实际被渲染到dom上的内容,只接受控制属性。所以key的绑定规范是绑定到template标签下一级的dom结构上,如果template标签下有多个同级结点,那么每一个同级结点都要绑定该template标签v-for中定义的变量的key。
key的绑定规范如上所述,所以第二个template标签下的内容绑定key也需如此。以我的代码为例,注意看注释
< template v-for = " (item1, index1) in [&#39; str1&#39; ,&#39; str2&#39; ,&#39; str3&#39; ]" > < div :key = " index1" > div> < template v-for = " (item2, index2) in [0,1,2,3,4]" > < div :key = " index2" v-if = " item===4" > div> template> template>
按照回答者的原话
You need to make sure that the key of the first
uses variables defined by both v-fors. 这个tr是Stack Overflow上提问者的第二个template标签下的内容,也是我上述代码中注释下的那个div标签
所以这个问题正确解决办法是,同时绑定两个v-for中定义的变量,如下所示(以我的代码为例)
< div :key = " index1+index2" > div>
其实怎样绑定也行,只要这个key值,与两个v-for中的变量有关即可。
回顾这个问题,其实它并不只发生在两个v-for在两个template标签上。 如下代码
< template v-for = " item1 in [&#39; str1&#39; ,&#39; str2&#39; ,&#39; str3&#39; ]" > < div :key = " item1" > div> < div v-for = " item2 in [1,2,3]" :key = " item2" > div> template>
上图为原uni-app代码,view标签等价于div标签 可以看到它仍然报了这个问题的错误,正确应该是
< template v-for = " item1 in [&#39; str1&#39; ,&#39; str2&#39; ,&#39; str3&#39; ]" > < div :key = " item1" > div> < div v-for = " item2 in [1,2,3]" :key = " item1+item2" > div> template>
至此,问题解决完毕
推荐阅读
本文探讨了在UIScrollView上嵌入Webview时遇到的一个常见问题:点击图片放大并返回后,Webview无法立即滑动。我们将分析问题原因,并提供有效的解决方案。 ...
[详细]
蜡笔小新 2024-11-18 21:13:13
尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ...
[详细]
蜡笔小新 2024-11-22 15:30:54
td{border:1pxsolid#808080;}参考:和FMX相关的类(表)TFmxObjectIFreeNotification ...
[详细]
蜡笔小新 2024-11-21 22:35:24
本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ...
[详细]
蜡笔小新 2024-11-21 17:38:10
本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ...
[详细]
蜡笔小新 2024-11-20 17:21:26
探讨了在VB中使用WebBrowser控件时遇到的‘无法找到或打开C:\WINDOWS\system32\ieframe.dll’问题,并提供了解决方案。 ...
[详细]
蜡笔小新 2024-11-19 10:18:04
ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ...
[详细]
蜡笔小新 2024-11-16 18:09:51
Jupyter Notebook 是一个开源的基于网页的应用程序,允许用户在同一文档中编写 Markdown 文本和运行多种编程语言的代码,并实时查看运行结果。 ...
[详细]
蜡笔小新 2024-11-15 14:50:50
本文详细介绍了Fiddler的安装步骤及配置方法,旨在帮助用户顺利抓取用户Token。文章还涵盖了一些常见问题的解决方案,以确保安装过程顺利。 ...
[详细]
蜡笔小新 2024-11-22 11:36:57
本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ...
[详细]
蜡笔小新 2024-11-22 05:45:48
本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ...
[详细]
蜡笔小新 2024-11-21 18:39:23
本文档介绍了如何使用OpenStack命令行工具在Keystone身份服务中创建和管理域、项目、用户及角色。随着Keystone命令向OpenStack命令集的迁移,了解这些新的命令格式对于系统管理员来说至关重要。 ...
[详细]
蜡笔小新 2024-11-21 11:46:03
本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ...
[详细]
蜡笔小新 2024-11-21 10:44:53
本文介绍了如何在前端开发中实现一个类似于StackOverflow样式的PPT展示页面和评论区,提供了项目源代码及在线演示链接,并分享了开发过程中遇到的挑战及其解决方案。 ...
[详细]
蜡笔小新 2024-11-19 12:17:45
作为一名前端开发者,Vue3 是一个不可或缺的工具。本文通过一个实战项目——双人联机俄罗斯方块,详细介绍如何利用 Vue3 的 Script Setup 语法糖进行开发,帮助读者掌握最新的前端技术。 ...
[详细]
蜡笔小新 2024-11-18 16:09:12