stars-oceans / yhc

个人博客,我个人在学习,和开发中遇到的一些问题总结。
1 stars 0 forks source link

ElementUI 组件库默认插槽的使用(#default) #16

Open stars-oceans opened 1 year ago

stars-oceans commented 1 year ago

ElementUI【一】elementUI组件库默认插槽的使用(#default)

前言 在使用elementUI组件库的时候,经常遇见组件带有默认插槽,带有默认插槽的需要我们改写,因为在接下来的删除、添加等功能中点用函数需要传参。

一、基于vue2的ElementUI

例如:table组件中的默认插槽slot-scope="scope",这里是老版写法,我们也这样写就会报错。

    <template slot-scope="scope">
        <el-button
          size="mini"
          @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
        <el-button
          size="mini"
          type="danger"
          @click="handleDelete(scope.$index, scope.row)">Delete</el-button>
      </template>

这里需要改写为:

1.第一种写法

    <template #defalut="scope">
        <el-button
          size="mini"
          @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
        <el-button
          size="mini"
          type="danger"
          @click="handleDelete(scope.$index, scope.row)">Delete</el-button>
      </template>

2.第二种写法

     <template #defalut>
        <el-button
          size="mini"
          @click="handleEdit({row})">Edit</el-button>
        <el-button
          size="mini"
          type="danger"
          @click="handleDelete({row})">Delete</el-button>
      </template>

3.第三种写法

   <template #defalut="{row}">
        <el-button
          size="mini"
          @click="handleEdit(row)">Edit</el-button>
        <el-button
          size="mini"
          type="danger"
          @click="handleDelete(row)">Delete</el-button>
      </template>

二、基于vue3的ElementUI(element-plus)

例如:table组件中的默认插槽#default="scope""或#default,。

  <template #default>
        <el-button link type="primary" size="small" @click="handleClick"
          >Detail</el-button>
        <el-button link type="primary" size="small">Edit</el-button>
 </template>

    <template #default="scope">
        <el-button size="small" @click="handleEdit(scope.$index, scope.row)"
          >Edit</el-button>
        <el-button
          size="small"
          type="danger"
          @click="handleDelete(scope.$index, scope.row)"
          >Delete</el-button>
   </template>

这里需要改写为:

1.第一种写法

<template #default='scope'>
<el-button link type="primary" size="small" @click="handleClick"
Detail</el-button

<el-button link type="primary" size="small">Edit</el-button>
</template>

2.第二种写法

<template #defalut>
<el-button
size="mini"
@click="handleEdit({row})">Edit</el-button>
<el-button
size="mini"
type="danger"
@click="handleDelete({row})">Delete</el-button>
</template>

3.第三种写法

     <template #defalut="{row}">
        <el-button
          size="mini"
          @click="handleEdit(row)">Edit</el-button>
        <el-button
          size="mini"
          type="danger"
          @click="handleDelete(row)">Delete</el-button>
      </template>

总结

两个版本的默认插槽使用方法一样,传参的三种方式也相同。