1. 程式人生 > >vue入門中元件命名時需要注意的地方

vue入門中元件命名時需要注意的地方

下面這張圖是從vue官方上擷取的 

其實不只是駝峰命名的prop在自定義標籤中需要用等價的短橫線分隔命名,元件自定義的標籤名稱也一樣 

還是官網的例子只不過我把元件的名稱改為駝峰式為  blogPost

Vue.component('blogPost', {
  // 在 JavaScript 中是 camelCase 的
  props: ['postTitle'],
  template: '<h3>{{ postTitle }}</h3>'
})

如果在html中自定義標籤想當然的認為是blogPost,並按如下的方式寫將會報錯 

<!---->
<blogPost post-title="hello!"></blogPost>

完整程式碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h3>演示駝峰式命名的自定義標籤的寫法</h3>
    <!-- v-bind:post-title="..."動態傳值,簡寫為:post-title="..."  -->
    <!-- 演示完報錯資訊只修改blogPost 為blog-post即可-->
    <blogPost :post-title="hello"></blogPost>
</div>
</body>
<script src="../../node_modules/vue/dist/vue.js"></script>
<script>
    Vue.component('blogPost', {
        template: '<h3>{{ postTitle }}</h3>',
        // 在 JavaScript 中是 camelCase 的
        props: ['postTitle']
    });
    let app = new Vue({
        el: "#app",  // el即element,該vue例項要渲染的頁面元素
        data: {
            hello: 'hello world!'
        }
    });
</script>
</html>

 想達到的效果頁面顯示兩行

第一行父元件的<h3> 演示駝峰式命名的自定義標籤的寫法</h3>

第二行動態傳值給子元件的<h3>hello world!</h3>

當然<h3></h3>瀏覽器解析並不會顯示

瀏覽器檢視效果只顯示第一行即父元件的'<h3></h3>'標籤的內容,為什麼呢開啟瀏覽器開發者工具,報錯信心如下:

 問你註冊<blogpost>元件了嗎,發現沒這裡都是小寫了並不是blogPost,我們在html中將自定義標籤修改為短橫線分隔命名(相對於定義元件時的駝峰式)

<blog-post post-title="hello!"></blog-post>

再來檢視,達到預期效果