vue3踩坑之作用域插槽的使用,以及vue3和vue2中作用域插槽的对比和使用

项目场景:

在系统后台开发中,前端需要对后端返回数据进行处理,比如说,用户角色、付款方式等等,而返回的这些数据里面通常是数字来表示相关的角色和身份,如:1表示管理员,2表示用户;又比如说1表示支付宝支付,2表示微信支付,3表示银行卡支付。页面上渲染出数据是数字的形式,但对用户来说其实这种方式并不具备明显的指代意义,所以为了实现更好的用户体验,前端会使用作用域插槽对该数据进行处理,实现与用户之间更好的交互,以下案例中使用el-tag标签来指代上述提到的数据。


开发场景

vue2对作用域插槽的使用,渲染不同的付款方式

1、没用使用作用域插槽渲染之前,返回数据渲染出的结果
在这里插入图片描述
2、使用作用域插槽对数据进行el-tag标签的渲染

       <el-table-column label="付款方式" prop="orderPay"  header-align="center" align="center">
          <template slot-scope="scope">// 使用作用域插槽对返回数据进行处理
            <el-tag type="success" v-if="scope.row.orderPay === 3">银行卡</el-tag>
            <el-tag type="success" v-else-if="scope.row.orderPay === 2">微信</el-tag>
            <el-tag type="success" v-else-if="scope.row.orderPay === 1">支付宝</el-tag>
            <el-tag type="danger" v-else>未支付</el-tag>
          </template>
        </el-table-column>
	

在这里插入图片描述

vue3对作用域插槽的使用,渲染不同的身份角色

1、没用使用作用域插槽渲染之前,返回数据渲染出的结果
在这里插入图片描述
2、使用作用域插槽对数据进行el-tag标签的渲染

       <el-table-column prop="role" header-align="center" align="center" label="用户角色">
          <template slot-scope="scope">
            <el-tag type="success" v-if="scope.row.role === 3">管理员</el-tag>
            <el-tag type="success" v-else-if="scope.row.role === 2">领导</el-tag>
            <el-tag type="success" v-else-if="scope.row.role === 1">老师</el-tag>
            <el-tag type="danger" v-else>学生</el-tag>
          </template>
        </el-table-column>
	

页面并没有像vue2一样渲染出我们想要的那种方式,且浏览器还报了一个.row
在这里插入图片描述
3、猜想是vue3使用作用域插槽参数或者什么改变了,通过查找解决方案最终解决了
实现预期设想方式如下:

       <el-table-column prop="role" header-align="center" align="center" label="用户角色">
          <template #default="scope">
            <el-tag type="success" v-if="scope.row.role === 3">管理员</el-tag>
            <el-tag type="success" v-else-if="scope.row.role === 2">领导</el-tag>
            <el-tag type="success" v-else-if="scope.row.role === 1">老师</el-tag>
            <el-tag type="danger" v-else>学生</el-tag>
          </template>
        </el-table-column>
	

预期效果如下:
在这里插入图片描述

产生这种现象的原因分析:

对比上述两段不同的代码:

在这里插入图片描述
在这里插入图片描述

所以vue3不同延用vue2中作用域插槽的使用方式,应该使用#default="scope"的形式使用作用域插槽!!!!
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我也想做全栈一霸!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值