首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在有状态组件根元素上使用v-for,因为它呈现多个元素?

问不能在有状态组件根元素上使用v-for,因为它呈现多个元素?
EN

Stack Overflow用户
提问于 2017-05-26 12:48:34
回答 2查看 32.4K关注 0票数 26

app.js

代码语言:javascript
复制
var Users = {
    template: `
        <tr v-for="list in UsersData">
            <th>{{ list.idx }}</th>
            <td>{{ list.id }}</td>
        </tr>
    `,
    data: function () {
        return {
            UsersData //get data from query
        }
    }
}

var mainview = new Vue({
    el: "#mainview",
    components: {
        'users': Users
    },
    method: {}
})

layout.blade.php

代码语言:javascript
复制
<body>
    <div class="container">
        <aside>...</aside>
        <main id="mainview">
            @section('content')
            @show
        </mainview>
    </div>
</body>

index.blade.php

代码语言:javascript
复制
@extends('layout')
@section('content')
<table>
    <thead>
        <tr>
            <th>IDX</th>
            <th>ID</th>
        </tr>
    </thead>
    <tbody>
        <users></users>
    </tbody>
</table>
@endsection

来自chrome控制台的错误日志

Vue warn:无法在有状态组件根元素上使用v-for,因为它会呈现多个元素:

代码语言:javascript
复制
<tr v-for="list in UsersData">
    <th>{{ list.idx }}</th>
    <td>{{ list.id }}</td>
</tr> 

vue.js:525 Vue warn:渲染函数返回了多个根节点。Render函数应返回单个根节点。(在组件中找到)

我应该如何修复代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-26 13:01:39

您的模板必须有一个根元素。这只是一条你不能打破的规则。由于您要创建一个表,因此将tbody作为根元素将是有意义的。

代码语言:javascript
复制
var Users = {
    template: `
        <tbody>
            <tr v-for="list in UsersData">
                <th>{{ list.idx }}</th>
                <td>{{ list.id }}</td>
            </tr>
        </tbody>
    `,
    data: function () {
        return {
            UsersData //get data from query
        }
    }
}

index.blade.php

代码语言:javascript
复制
@extends('layout')
@section('content')
<table>
    <thead>
        <tr>
            <th>IDX</th>
            <th>ID</th>
        </tr>
    </thead>
    <users></users>
</table>
@endsection
票数 42
EN

Stack Overflow用户

发布于 2017-07-20 04:38:15

对于lazy: Vue将具有v-for循环的根元素解释为生成多个根级元素(在现代JS框架中不是这样)。

只需将模板包装在一个多余的空白<div>中即可。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44193822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档