小葛
小葛
  • 发布:2023-08-23 10:13
  • 更新:2023-12-13 14:28
  • 阅读:183

【报Bug】uniapp运行到支付宝小程序,父组件传入函数到子组件,函数丢失

分类:uni-app

产品分类: uniapp/小程序/阿里

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.8.12

第三方开发者工具版本号: 3.7.9

基础库版本号: 2.8.8

项目创建方式: HBuilderX

示例代码:

父组件

<template>  
    <view class="content">  
        <g-form :zzzz="zzzz"></g-form>  
    </view>  
</template>  

<script>  
    import gForm from "@/components/g-form/g-form.vue"  
    export default {  
        components: {  
            gForm  
        },  
        data() {  
            return {  
                title: 'Hello',  
                zzzz: {  
                    a: 'a',  
                    b: (a) => {  
                        console.log('---')  
                    }  
                }  
            }  
        },  
        onLoad() {  

        },  
        methods: {  

        }  
    }  
</script>

子组件

<template>  
    <view>  
        11111111111111  
    </view>  
</template>  

<script>  
    export default {  
        name: "g-form",  
        props: {  
            zzzz: Object  
        },  
        data() {  
            return {  

            };  
        },  
        created() {  
            console.log(this.zzzz)  
        }  
    }  
</script>

操作步骤:

父组件中传入函数

预期结果:

子组件能接收函数

实际结果:

子组件打印结果没有

bug描述:

父组件传入子组件参数

zzzz: {  
    a: 'a',  
    b: (a) => {  
        console.log('---')  
    }  
}

H5中打印该参数如图1
运行到支付宝小程序后打印为如图2
当传入函数时,函数丢失

2023-08-23 10:13 负责人:无 分享
已邀请:
w***@gmail.com

w***@gmail.com

我测试了使用Vue3可以正常工作。Vue2不行。我从Vue2中分别定义Object和Function的Props类型来看,Object可能只能传普通属性,不能传函数的属性

  • 小葛 (作者)

    我是在form表单多个验证里面发现的这个bug

    想使用validator自定义函数

    2023-08-23 14:09

  • w***@gmail.com

    回复 小葛: 我又拿原生vue验证了一下,vue2.7是可以正常传过去的,那看来还得看看uniapp编译这块了

    2023-08-23 14:43

  • 小葛 (作者)

    回复 w***@gmail.com: 需要等官方修复了

    2023-08-23 14:58

  • w***@gmail.com

    回复 小葛: 我又拿原生支付宝小程序写了个程序测试了一下,发现这是支付宝小程序本身就给忽略了方法。不是uniapp的问题。所以你这种传方法的方式目前应该是走不通了,只能考虑把验证规则传过去,验证方法在组件里面。或者序列化了再传

    2023-08-24 08:11

2***@qq.com

2***@qq.com

我在vue2 也发现这个问题

要回复问题请先登录注册