vue.js - Vue-循环和事件处理程序的最佳实践
问题描述
我很好奇是否最好包含methods
在循环中而不是使用v-if
. 假设以下代码有效(它们不完整且无效)
例如:方法
<template >
<div>
<div v-for="(d, i) in data" v-bind:key="i">
<span v-on:click="insertPrompt($event)">
{{ d }}
</span>
</div>
</div>
</template>
<script>
export default {
data() {
data:[
.....
]
},
methods:{
insertPrompt(e){
body.insertBefore(PROMPT)
}
}
}
</script>
DOM 将通过insertPrompt()
仅用于显示的功能进行更新
例如:V-IF
//父母
<template >
<div>
<div v-for="(d, i) in data" v-bind:key="i">
<child v-bind:data="d"/>
</div>
</div>
</template>
<script>
import child from './child'
export default {
components:{
child
},
data() {
data:[
.....
]
},
}
</script>
//孩子
<template>
<div>
<span v-on:click="display != display">
{{ d }}
</span>
<PROMPT v-if="display"/>
</div>
</template>
<script>
import child from './child'
export default {
components:{
child
},
data(){
return {
display:false
}
},
props: {
data:{
.....
}
},
}
</script>
这PROMPT
是一个基本模板,使用来自循环数据单击的数据呈现。
两种方法都可以实现相同的最终结果。我最初的想法是在循环中添加额外的条件会对性能产生负面影响?!?!
非常感谢任何指导
解决方案
除非您在循环中渲染了非常大量的项目(并且大多数时候您没有),否则您根本不需要担心性能。任何差异都将是如此之小,没有人会注意到/受益于更快的微小触摸。
我想说的第二点是,自己操作 DOM 通常不是最好的主意:为什么现代 JavaScript 框架不鼓励与 DOM 直接交互
所以我无论如何都会坚持v-if
有条件地渲染事物。如果您想在这里关心性能/速度,您可能会考虑您的应用程序的使用方式并在v-if
和之间做出决定v-show
。引用官方文档:
v-if
是“真正的”条件渲染,因为它确保条件块内的事件侦听器和子组件在切换期间被正确销毁和重新创建。
v-if
也是懒惰的:如果在初始渲染时条件为假,它不会做任何事情 - 条件块不会被渲染,直到条件第一次变为真。相比之下,
v-show
它要简单得多——无论初始条件如何,元素总是被渲染,并使用基于 CSS 的切换。一般来说,
v-if
切换成本较高,而 v-show 的初始渲染成本较高。因此v-show
,如果您需要经常切换某些东西,则更喜欢,v-if
如果条件不太可能在运行时改变,则更喜欢。
推荐阅读
- javascript - Vue.js 在方法中导入 Axios 然后使用它
- google-cloud-platform - Google Cloud API Gateway 对多个服务帐号进行身份验证
- python - 在 OSMnx 中使用大型 OSM 文件
- javascript - 如何计算javascript中的时间差?
- laravel - 有没有办法在 Laravel 中为 WebPush 通知生成 VAPID 密钥?
- android - 如何使用 SKSurface.Snapshot() 对表面进行快照?
- php - 无法保存到数据库 PHP/PDO
- git - Moving branch from one remote repo to another
- javascript - 如何在我的网站上显示 Linkedin 提要
- c# - 单击按钮时值变为负一