vue3+element-plus中,element表格组件不显示

错误原因:<el-table>被两层<template>所包裹

错误代码:

<template>
...

<!--表格-->
    <div class="dataFrom">
    <template>
      <el-table :data="tableData" style="width: 100%">
        <el-table-column fixed prop="id" label="序号" width="80" type="index" align="center" />
        <el-table-column prop="enterpriseName" label="企业名称" width="120" />
        <el-table-column prop="enterpriseType" label="企业类型" width="120" />
        <el-table-column prop="industry" label="所属行业" width="120" />
        <el-table-column prop="province" label="所属省份" width="120" align="center">
        </el-table-column>
        <el-table-column prop="city" label="所属城市" width="120" align="center"> </el-table-column>
        <el-table-column prop="personnelSize" label="人员规模" width="120" align="center">
        </el-table-column>
        <el-table-column prop="jobTitle" label="招聘岗位" width="120" align="center">
        </el-table-column>
        <el-table-column prop="hiringInstitution" label="招聘学院" width="120" align="center">
        </el-table-column>
        <el-table-column prop="offerSize" label="招聘数量" width="120" align="center">
        </el-table-column>
        <el-table-column prop="major" label="招聘专业" width="120" align="center">
        </el-table-column>
        <el-table-column prop="educationRequirement" label="学历要求" width="120" align="center">
        </el-table-column>
        <el-table-column prop="salary" label="薪资待遇" width="120" align="center">
        </el-table-column>
        <el-table-column prop="jobRequirements" label="招聘要求" width="120" align="center">
        </el-table-column>
        <el-table-column prop="contectInformation" label="联系方式" width="120" align="center">
        </el-table-column>
        <el-table-column prop="notes" label="备注" align="center"> </el-table-column>
        <el-table-column fixed="right" label="操作" width="120">
          <template #default>
            <el-button link type="primary" size="small">Detail</el-button>
            <el-button link type="primary" size="small">Edit</el-button>
          </template>
        </el-table-column>
      </el-table>
    </template>
    </div>
</template>

分析:如果出现element组件不显示的问题,一般来说原因在于表格的“:data”对应的数据模型未定义或者定义格式错误。但是经检查后,我发现原代码中并没有问题。后尝试去掉里面一层template,我发现表格组件出现,问题解决。
 


下面介绍<template>标签的作用:

在 Vue.js 中,`<template>` 标签具有特定的用途,尽管它在最终的渲染结果中并不会被直接包含。Vue.js 的 `<template>` 标签主要用于以下目的:

1. **定义组件的 HTML 结构**:在 Vue 组件中,`<template>` 标签包裹了组件的 HTML 结构。这个结构描述了当组件被渲染到页面时应该显示什么样的内容。

<template>
  <div>
    <h1>{{ message }}</h1>
    <p>这是一个 Vue 组件</p>
  </div>
</template>


 

2. **条件渲染和列表渲染**:`<template>` 标签经常与 `v-if`、`v-else-if`、`v-else` 或 `v-for` 等指令一起使用,以控制哪些元素应该被渲染到 DOM 中。在这些情况下,`<template>` 标签作为一个包裹元素,它本身不会被渲染,但其内容会根据条件或列表项进行渲染。

<template v-if="showMessage">
  <p>这条消息会显示,如果 showMessage 为真。</p>
</template>

<template v-for="item in items">
  <div>{{ item }}</div>
</template>


 

在上面的例子中,`v-if` 和 `v-for` 都是直接作用在 `<template>` 标签上的,但 `<template>` 本身不会在最终的 DOM 中出现。`v-if` 控制是否渲染 `<p>` 元素,而 `v-for` 则负责根据 `items` 数组中的每个元素渲染多个 `<div>` 元素。

3. **作用域插槽**:在 Vue 的插槽(slot)功能中,`<template>` 标签也扮演着重要角色。特别是当使用作用域插槽时,`<template>` 标签用于定义插槽的内容,并可以访问由父组件传递的插槽 prop。

<!-- 子组件 -->
<template>
  <div>
    <slot :user="user"></slot>
  </div>
</template>

<!-- 父组件 -->
<template>
  <child-component>
    <template v-slot:default="{ user }">
      <p>用户名:{{ user.name }}</p>
    </template>
  </child-component>
</template>


 

在这个例子中,子组件通过 `<slot>` 元素提供了一个名为 `user` 的 prop。父组件通过 `<template v-slot:default>` 来定义如何渲染这个插槽,并且可以访问到 `user` prop。

总结来说,Vue 中的 `<template>` 标签主要用于组织组件的 HTML 结构、实现条件渲染和列表渲染,以及在插槽中定义可重用的内容模板。但请注意,`<template>` 标签本身在最终的渲染结果中不会被包含。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值