web-dev-qa-db-fra.com

Modèle de compilation des erreurs VueJS

Je viens de faire mon premier projet avec VueJS et Vue-loader.

J'ai donc créé mon premier composant pour afficher un message simple, cela fonctionne très bien lorsque je fais un message, mais j'obtiens une erreur lorsque je fais plusieurs messages:

(Emitted value instead of an instance of Error) 
  Error compiling template:

  <message>This is a small message!</message>

  <message>Another one</message>

  - Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.

Ceci est mon code. Je suis très nouveau dans ce domaine et je ne peux pas comprendre ce qui ne va pas.

App.vue

<template>
    <message>This is a small message!</message>

    <message>Another one</message>
</template>

<script>
    import Message from './Components/Message.vue';

    export default {
        name: 'app',

        components: {
            Message,
        },

        data () {
            return {

            }
        }
    }
</script>

Message.Vue

<template>
    <div class="box">
        <p>
            <slot></slot>
        </p>
    </div>
</template>

<script>
    export default {

    }
</script>

<style>
    .box { background-color: #e3e3e3; padding: 10px; border: 1px solid #c5c5c5; margin-bottom: 1em;}
</style>

J'espère que quelqu'un pourra vous aider!

8
Nieck

L'erreur est assez explicite. Vous ne devez avoir qu'un seul élément racine dans chaque composant. Il suffit donc de tout emballer dans une div.

<template>
    <div>
        <message>This is a small message!</message>
        <message>Another one</message>
    </div>
</template>
16
Cobaltway