vue.js - 无法解析 vue 中的组件
问题描述
在 Content.vue 我有一行:let html = this.html.replace('[BuyHere]', '<buy-button :label="label"></buy-button>');
这导致“无法解析组件:购买按钮”警告。如果我删除参考,则替换有效,但我不明白为什么会收到此警告,因为我相信我已经正确导入并声明了它。
main.js
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
应用程序.vue
<template>
<img alt="Vue logo" src="./assets/logo.png">
<ContentView/>
</template>
<script>
import ContentView from './components/ContentView.vue'
export default {
name: 'App',
components: {
ContentView
}
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
}
</style>
内容.vue
<template>
<component v-bind:is="processedHtml"></component>
</template>
<script>
import BuyButton from "./BuyButton.vue"
export default {
name: 'ContentView',
components: {
BuyButton
},
data () {
return {
html: '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>[BuyHere]<p>Donec tellus arcu, rhoncus eget leo sit amet, blandit aliquam sapien.</p><p>Aenean leo ligula, ultricies non nisi non, laoreet mattis arcu.</p>',
label: 'Buy Here! -10% Off',
}
},
computed: {
processedHtml () {
let html = this.html.replace('[BuyHere]', '<buy-button :label="label"></buy-button>');
return {
template: '<div>' + html + '</div>',
props: {
label: {
type: null,
default: () => { return this.label }
},
}
}
}
}
}
</script>
BuyButton.vue
<template>
<input type="button" :value="label">
</template>
<script>
export default {
name: 'BuyButton',
props: ['label']
}
</script>
解决方案
components: {
BuyButton
},
是本地注册。本地表示该组件仅ContentView
在组件模板中被识别
通过将对象(processedHtml
- 组件的选项对象的返回值)传递给v-bind:is
您,您基本上是在创建一个新的“未命名”组件并BuyButton
在其模板中使用该组件,但它没有在那里注册......
使固定:
processedHtml () {
let html = this.html.replace('[BuyHere]', '<buy-button :label="label"></buy-button>');
return {
components: {
BuyButton
},
template: '<div>' + html + '</div>',
props: {
label: {
type: null,
default: () => { return this.label }
},
}
}
}
推荐阅读
- r - dplyr if_any and numeric filtering?
- r - Is there a way to apply a crossproduct to a new column in R using mutate?
- html - 你如何限制背景颜色在html中占据的区域?
- javascript - 使用轮播在 Nuxt 应用程序中引发“未定义 Flickity”的自定义按钮
- c++ - QML 插槽中未收到 C++ 信号
- mongodb - 我是 mongoDB Atlas 的新手,我现在想知道如何删除我的 MongoDB Atlas 项目
- macos - NSDocument 应用程序不再能够打开保存的文档
- java - 为视频播放器启动新活动时,如何强制android视频播放器在视频播放后不退出
- java - datagrip 如何从 couchbase 存储桶中获取所有文档?
- python - 无法使用硒单击阴影根元素