踩坑uni-app,子组件Props设置Function,父组件把办法传给子组件后,该办法里的this指向子组件而不是父组件。

在开发下拉选项组件时,选项弹出要求有前置条件,本想在子组件Props绑定一个钩子函数,承受一个回调办法,父组件中设置该办法,通过一些前置条件判断,将后果以执行回调办法时通过参数返回到子组件中,失常vue web我的项目齐全没有问题。但时,uniapp貌似将父组件绑定的办法间接给编译到子组件了,故该办法this指向子组件。

// 子组件export default {    props: {          beforeShow: Function,    },    methods: {          handleSelect() {            if(this.beforeShow){                this.beforeShow(v=>{                    this.show = v;                })            }              this.show = true;        }      },}// 父组件export default {    methods: {          beforeShow(fn) {            fn(!this.type); // 这里的this 在uni-app中指向子组件        }      },}

尽管说小程序反对对象中的办法,但看评论,如同并不反对。

而且嘴还很硬,啊,对对对....

问题链接,https://ask.dcloud.net.cn/que...

如果含有fn,不要用props传参,有的端反对,有的却不反对,除非改设计模式。

所以不要传递Fn了,换种形式实现吧。通过$refs获取子组件,调用子组件中的办法,来实现一些性能。