typescript - 如果前一个组件自行终止,Vue 不会渲染第二个组件

标签 typescript vue.js parceljs

在我的根组件中,App.vue ,我有以下模板代码:

<template>
<div class="app-wrapper">
    <Header></Header>
    <Panel></Panel>
    <Showcase/>
    <Modal/>
    <Footer/>
</div>
</template>

我只是想模拟我正在构建的应用程序,因此这些部分没有嵌套并且不包含任何有意义的内容。

这些 Vue 组件中的每一个都在其 .vue 中包含以下内容:

<template>
  <div class="panel-wrapper">Panel</div>
</template>

<script lang="ts">
import Vue from "vue";
export default Vue.extend({
  name: "Panel"
});
</script>


<style lang="scss">
.panel-wrapper {
  background: orange;
  font-size: 1.75rem;
}
</style>

这对于 Header 也是一样的, Showcase , ModalFooter .

出于某些奇怪的原因,在上述代码中,只有 Header、Panel 和 Showcase 组件呈现。如果我改变 <Showcase/><Showcase></Showcase>然后 Modal 也会呈现。

无论组件是否自行终止其 JSX,它都不应呈现吗?

我是 Vue 的新手,我自己用 TS 和 Parcel 设置了项目,但我不知道这是否与它有任何关系。

最佳答案

这是 Parcel bundler 的一个已知问题。包裹的posthtml作为一个 HTML 解析器,它打破了自定义的自关闭 HTML 标签。

作为临时解决方案,您必须告诉 bundler 明确识别自关闭自定义元素。将以下配置添加到您的 package.json:

"posthtml": {
    "recognizeSelfClosing": true
}

正在以下线程中跟踪此问题: issue-1issue-2 .

关于typescript - 如果前一个组件自行终止,Vue 不会渲染第二个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56572975/

相关文章:

javascript - TypeScript generic 编写装饰器时出错?

javascript - Vuetify 数据表项槽中的文本字段

parceljs - 如何使用 Parcel 与应用程序的其余部分分开构建 Assets

javascript - Vue 计算属性返回一个 promise ?

javascript - 将预定义函数导入 ES6 模块

javascript - 如何使用环境变量为浏览器实现Microsoft Azure Blob存储?

javascript - 照片未显示 Ionic 3

typescript - 带有 `src` 和 `tests` 的项目的 tsconfig.json

javascript - 如何返回 Http 响应?

javascript - vue js v-for 指令中的函数调用使循环进入无限循环,我不知道为什么