1***@qq.com
1***@qq.com
  • 发布:2021-09-04 11:51
  • 更新:2021-09-05 01:05
  • 阅读:442

在写jsx组件中,组件重复渲染,前两次渲染props正常,但是最后一次输出为default,在h5正常输出props. 【报Bug】

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

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

HBuilderX类型: 正式

HBuilderX版本号: 3.2.3

手机系统: Android

手机系统版本号: Android 6.0

手机厂商: 模拟器

手机机型: mumu模拟器

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

export default {
props: {
type: {
type: String,
default: 'default'
},
},
render(createElement) {
const { type } = this
console.log('type:', type)
// 警告按钮输出
if (type === 'warn') return createElement(
'view', // 标签名称
{
class: {
'bt-button': true,
'bt-button-warn': true
}
},
this.$slots.default // 子节点数组
)
// 默认输出按钮
return createElement(
'view', // 标签名称
{
class: {
'bt-button': true
}
},
this.$slots.default // 子节点数组
)
}
}

操作步骤:

在页面上引入js,然后声明组件就可以看到

预期结果:

type:, warn
type:, warn
type:, warn

实际结果:

type:, warn
type:, warn
type:,

bug描述:

在写jsx组件中,组件重复渲染,前两次渲染props正常,但是最后一次输出为default,在h5正常输出props. 看了论坛上都是小程序的,没有报app的,想问下官方大佬怎么回事
注意:无论是window还是mac都是一样的结果

2021-09-04 11:51 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者) - 普通开发者

补充下,试过华为nova 7 5g版(鸿蒙系统),红米redmi5 android8.0.1是一样的结果,都渲染了三次,最后一次的结果是props默认值default

1***@qq.com

1***@qq.com

建议用symbol来判断下是否为空再执行

  • 1***@qq.com (作者)

    问题是这个type是传了也为空,就不太科学了,用.vue文件是行的,我用的是js文件写的jsx

    2021-09-05 17:47

该问题目前已经被锁定, 无法添加新回复