uni-app 插槽传递的数据无法传递到函数中
uni-app 插槽传递的数据无法传递到函数中
示例代码:
<template #bottom="{ rangeData }">
<view class="px-20px py-15px text-14px f-space-between">
<view class="font-semibold">排班任务</view>
<view
class="flex flex-1 items-center justify-end text-jr-remark"
@click="selectTaskTemplate"
>{{ taskSourceType.name || '请选择任务' }}
<jr-icon
color="var(--jr-text-remark)"
name="arrow-right"
></jr-icon>
</view>
</view>
<view class="mt-15px box-border w-full px-20px f-space-between">
<view
class="mr-15px h-40px flex-1 rounded-full !text-14px jr-btn-cancel"
@click.stop="showRangePopup = false"
>收起
</view>
<view
class="h-40px flex-1 rounded-full !text-14px jr-btn-primary"
@click.stop="confirmSetTimeRange(rangeData)"
>提交
</view>
</view>
</template>
操作步骤:
- 通过插槽传递数据出来
- 渲染是可以使用的
- 点击提交报错
预期结果:
点击提交正常传递rangeData
实际结果:
rangeData 不存在,报错
bug描述:
插槽传递的数据无法传递到函数中
cli版本2.0.2-alpha-4080220250929001
| 信息类型 | 信息 |
|---|---|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境 | Windows |
| PC开发环境版本 | win11 |
| HBuilderX版本 | 4.82 |
| 第三方开发者工具 | 2.012509282 |
| 基础库版本 | 3.8.10 |
| 项目创建方式 | CLI |
| CLI版本 | 2.0.2-alpha-4080220250929001 |
更多关于uni-app 插槽传递的数据无法传递到函数中的实战教程也可以访问 https://www.itying.com/category-93-b0.html
5 回复
发个完整的demo,记得精简代码和脱敏
目前实在没时间提供demo,排查发现是渲染了taskSourceType.name导致的,如果渲染了data定义的数据,不会生成插槽对应的组件,很奇怪,删除掉之后就能正常生成了,以前没出现过这种情况
暂时将需要渲染data中的数据的地方放到另外的插槽里解决了
在uni-app中,插槽传递的数据在模板渲染时可以直接使用,但在方法调用时需要通过函数参数显式传递。
问题在于你的confirmSetTimeRange函数调用时没有接收到rangeData参数。虽然模板中能渲染rangeData,但在点击事件中需要显式传递:
<view
class="h-40px flex-1 rounded-full !text-14px jr-btn-primary"
@click.stop="confirmSetTimeRange(rangeData)"
>提交</view>
确保confirmSetTimeRange方法在methods中正确定义:
methods: {
confirmSetTimeRange(rangeData) {
console.log('接收到的数据:', rangeData)
// 处理rangeData逻辑
}
}
如果仍然报错,检查插槽数据源组件是否正确传递了rangeData。在父组件中确认插槽作用域数据是否正常提供:
<your-component>
<template #bottom="{ rangeData }">
<!-- 确保rangeData在这里有值 -->
{{ rangeData }}
</template>
</your-component>

