记录uniapp和mpvue框架下组件传递函数this作用域存在差异问题

本文探讨了在uniapp和mpvue框架下,父子组件间传递函数时,函数作用域的不同行为。在uniapp中,父组件方法的this指向子组件,导致数据修改失败;而mpvue中,this保持正确指向,使得函数执行正常。问题的出现与框架处理事件和上下文的方式有关,有待进一步研究解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上代码

父组件

// 父组件
<template>
	<div>我是父组件</div>
	<child :func="testFunc" />
</template>

<script>
import child from './child'

export default {
  components: {
    child
  },
  data () {
    return {
      hello: 'world'
    }
  },
  methods: {
  	testFunc() {
  	  this.hello = 'xixi'
  	}
  }
}
</script>

子组件

// 子组件
<template>
	<button @click="func" />
</template>

<script>

export default {
  props: {
    func: Function
  }
}
</script>

上面是根据我自己业务逻辑简化后的代码,就是上面同样的代码,在uniappmpvue中运行的结果居然是不一样的。

  • uniapp中,函数testFunc中的this作用域是指向子组件child的,所以hello的值无法赋值成功。
  • mpvue中,函数testFunc中的this作用域就是指向当前组件,函数执行没问题。
记录,后续研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值