vuejs3 - Vue 3 添加反应性类来挂载元素
问题描述
如何在 Vue 3 中添加响应性类来挂载组件,例如#app
?
Vue 2 在App.vue
<div id="app" :class="{ 'nav-open': nav, 'tools-open': tools}">
...
</div>
解决方案
是的,所以 v3 不允许您拥有顶级属性。您可以嵌套div
并以这种方式控制它。或者,您可以使用一些 vanilla js 来查找父元素并切换类,并使用手表(或计算)启动更改
这是一个使用的示例document.getElementById("app").classList
Vue.createApp({
setup() {
const setAppClass= ()=>{
if(top.value){
document.getElementById("app").classList.add("top");
} else {
document.getElementById("app").classList.remove("top");
}
}
const nested = Vue.ref(true);
const top = Vue.ref(true);
Vue.watch([top], ()=> {
setAppClass();
})
setAppClass();
return {nested, top};
}
}).mount('#app')
div{
border-left: 6px solid transparent;
padding: 0.2em;
}
.nested{
border-color: blue;
}
.top{
border-color: tomato;
}
<script src="https://unpkg.com/vue@3.0.7/dist/vue.global.prod.js"></script>
<div id="app" >
<div :class={nested:nested}>
<label><input type="checkbox" v-model="nested"> nested</label>
<label><input type="checkbox" v-model="top"> top</label>
</div>
</div>
推荐阅读
- php - 通过 2 个嵌套循环循环执行相同的查询 2 次
- bash - AWK:减变量,当变量为负数时
- javascript - Moment.js 在未来日期的情况下错误地转换日期
- dataweave - 从 ArrayList 到 Object 的 Dataweave 转换
- django - 如何将大型 Django 项目划分为子项目进行扩展?
- ios - 我们可以在 Swift 上重用 struct 吗?或者还有其他方法吗?
- pdf-generation - Ghostscript : ps to pdf - 保持方向
- javascript - 使用 progressbar.js 在我的进度圈上添加限制栏
- tfs - TFS 2018 代码搜索
- node.js - Mongoose 查找设置,例如。如果位置是全部显示所有结果不是位置:“全部”