sann219sa
sann219sa
  • 发布:2020-09-14 16:22
  • 更新:2023-02-27 01:25
  • 阅读:1655

【报Bug】传给子组件的属性值为 null/undefined/空字符串 时,default值不起作用。

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS 10.15.6

HBuilderX类型: 正式

HBuilderX版本号: 2.8.11

第三方开发者工具版本号: stable v1.03.2005140

基础库版本号: 2.10.0

浏览器平台: Chrome

浏览器版本: 84.0.4147.105

项目创建方式: HBuilderX

操作步骤:

// t-text.vue组件

<text> {{ text }} </text>  

{  
    props:{  
         text:{  
             type: String,  
             default: "这是默认文字"  
         }  
    }  
}

// index.vue 父组件

<view>  
    <t-text text=""></t-text>  
    <t-text :text="''"></t-text>  
    <t-text :text="null"></t-text>  
    <t-text :text="undefined"></t-text>  
    <t-text text="传入的文字"></t-text>  
</view>

预期结果:
<text></text>  
<text></text>  
<text></text>  
<text>这是默认文字</text>  
<text>传入的文字</text>

实际结果:
<text>true</text>  
<text>true</text>  
<text></text>  
<text></text>  
<text>传入的文字</text>

bug描述:

在微信小程序端(其他端未测试),父组件如果传一个undefined 的prop,在子组件中,获取不到prop的默认值。

另外一个问题:
看了下编译后的代码,<t-text :prop="''"><t-text prop="">会被编译成<t-text prop>`,这样会导致prop取值为'true'。

这个BUG很难受,导致prop的default几乎没什么用,所有的默认值都得写一个计算属性,这样开发效率很低,程序效率也很低,望尽快修复。

2020-09-14 16:22 负责人:无 分享
已邀请:
h***@163.com

h***@163.com

刚遇到

参数无法传空字符串

应该只有在参数是布尔类型的时候才设置为true才对

sann219sa

sann219sa (作者)

为什么没有官方回复呢?

DCloud_UNI_GSQ

DCloud_UNI_GSQ

收到,后续考虑一下合适的兼容方案。

  • 8***@qq.com

    快两年了,这个问题解决了吗?

    2022-07-21 18:03

  • l***@163.com

    回复 8***@qq.com: 没有

    2024-11-04 16:41

阿歪绅士

阿歪绅士

2023-2-27今天我也遇到了同样的问题。都快3年了。还没解决。这速度。。。。

要回复问题请先登录注册