Vue.js技术疑问:如何在单个div元素上同时结合v-bind与v-if使用?
当然可以实现!
完全没问题,Vue允许在同一个元素上同时使用动态类绑定和**v-if条件渲染**,两者不会冲突,反而能让你的代码更简洁。
先帮你优化一下原来的动态类写法(用数组+对象语法更易读,避免冗长的三元表达式),再加上v-if的逻辑,示例代码如下:
<div <!-- 这里替换成你的v-if判断条件,比如结合store状态或截止日期逻辑 --> v-if="$store.state.ClassCheck || Date.now() >= new Date(deadline)" :class="[ // 固定类名放在数组里 'search-result col-12 col-lg-10 container', // 动态类用对象语法,条件满足时添加hideclosed类 { hideclosed: Date.now() >= new Date(deadline) } ]" > <h3 :class="{ showclosed: $store.state.ClassCheck }">{{ title }}</h3> </div>
几个小建议:
- 如果你的
v-if条件是和截止日期或store状态相关的,直接写在v-if里即可,比如你想仅当截止日期已过或者ClassCheck为true时才渲染这个div,就用上面的条件。 - 每次渲染都调用
new Date(deadline)有点浪费性能,建议把这个判断放到计算属性里:
然后模板里就可以直接用<script> export default { computed: { isDeadlineExpired() { return Date.now() >= new Date(this.deadline); } } } </script>isDeadlineExpired代替重复的表达式,代码更干净:<div v-if="$store.state.ClassCheck || isDeadlineExpired" :class="[ 'search-result col-12 col-lg-10 container', { hideclosed: isDeadlineExpired } ]" > <h3 :class="{ showclosed: $store.state.ClassCheck }">{{ title }}</h3> </div>
这样就把动态类和条件渲染完美结合在同一个div上啦!
内容的提问来源于stack exchange,提问作者user13928344
相关产品推荐
相关产品推荐

