javascript - Vue 替换“el”组件而不是在其中渲染?
问题描述
我不知道这是否是标准功能,但 Vue 在创建实例时替换了“el”指定的元素,而不是在其中渲染。
如果我使用 id 来引用“el”,那么它可以正常工作。IE,
new Vue({el: "div#app", render: h => h("span", {}, "Hello World")})
这将呈现为:
<body><div id="app"><span>Hello World</span></div></body>
但是如果我将 JS Element 对象用作“el”,那么它会完全替换该元素。
const divElement = document.querySelector("div#app");
new Vue({el: divElement, render: h => h("span", {}, "Hello World")});
将呈现为:
<body><span>Hello World</span></body>
它应该这样做,还是我做错了什么?
解决方案
可能你这边有些困惑。我刚刚准备了一个样本,其中:
const el = document.getElementById("app");
new Vue({ el: el, render: (h) => h(App) });
成功渲染到:
<body><div id="app">// content here</div></body>
https://codesandbox.io/s/clever-swartz-yie0l?file=/src/main.js
但是您仍然需要记住,这不是您在安装 vue 之前拥有的 DOM 元素,而是它的虚拟表示。
来自 Vue 文档:
提供的元件仅用作安装点。与 Vue 1.x 不同,挂载的元素在所有情况下都将替换为 Vue 生成的 DOM。因此不建议将根实例挂载到 或 。
推荐阅读
- python - 在 .txt 文件中包含值的循环内循环
- python-3.x - 使用任何其他安装程序交付 Python 可执行文件
- google-app-engine - 如何从 Google App Engine (Python) 调用 Google Talent Solution api
- android - java.lang.IllegalArgumentException:未知权限:com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE
- amazon-web-services - 带有 # 的 url 的 AWS 负载均衡器运行状况检查失败
- spring - Spring Batch - 如何使用 JavaConfig 全局设置 RunIdIncrementer
- macos - NSScrollView 未在 Mojave OSX 10.14 中刷新其文档视图
- php - PHP - 获取正确的值类型并编码正确的 JSON 字符串
- sas - (SAS) 在连接期间删除重复项
- java - 如何从我的应用程序的前台服务连续检查哪个应用程序在前台打开?