[英]Create a custom component in Vue.js
我目前正在学习 JavaScript、HTML 和 Vue.Js,以及现在如何使用组件。 我正在学习使用机器人更正代码的在线课程。
任务是创建一个组件greet
,当使用<greet></greet>
调用它时会产生<div>hello!</div>
>。 要完成作业,我需要使用Vue.Component
和 Templete templete
。 我需要在new Vue
调用者处设置el
值,使其匹配<div id="app"></div>
到目前为止,这是在我的 HTML 代码中(包括脚本 src):
<body>
<div id="app">
<greet="greet"></greet>
</div>
</body>
到目前为止,这是我的 Vue 代码
new Vue({ el: '#app' })
Vue.component('greet', {
data() {
return {
greet
}
},
template: '<div>hello!</div>'
})
HTML 页面上的 output 只是空白,所以我不明白我在这里缺少什么。
来自机器人的 output 是:
file.js
✓ exists
✓ is valid JavaScript
1) renders the correct markup
这里有几个错误。
首先<greet="greet"></greet>
不起作用。 vue 里有个叫props的东西(以后会学) 把那行<greet></greet>
然后您不必使用data()
来显示 hello div。 从数据中删除greet
。
以上步骤可能会解决您的错误
当您使用语法 Vue.component() 时,您正在全局注册一个组件,因此它可以被之后创建的任何新 Vue 实例使用。 所以:
new Vue({ el: '#app' }) // this Vue instance does not contain the greet component because it does not exists yet.
Vue.component('greet', {
data() {
return {
}
},
template: '<div>hello!</div>'
})
反而:
Vue.component('greet', {
data() {
return {
}
},
template: '<div>hello!</div>'
})
new Vue({ el: '#app' }) // this Vue instance will contain the greet component because it was already created and registered.
<greet="greet"></greet>
也不是有效的语法。 它应该是<greet></greet>
。
您应该从 data() function 中删除 greet。 它没有任何意义和用途。
最终代码应如下所示:
<body>
<div id="app">
<greet></greet>
</div>
</body>
Vue.component('greet', {
template: '<div>hello!</div>'
})
new Vue({ el: '#app' })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.