vue2.6+vue/composition-api的this和vue2.7中的this不同?

vue/composition-api项目中很多地方setup中的函数使用了this然后再return出来,模板上绑定事件调用这个函数是可以访问到this,但是在vue2.7中不行。
在vue/composition-api的setup中打印this输出是undefined,在vue2.7中打印this是null。
示例:分别在vue/composition-api和2.7中使用这个组件,最开始会执行setup函数,输出this,然后点击打印再输出this

<template>

<div>

<div ref="div">vue2.6+composition</div>

<div ref="div">vue2.7</div>

<button @click="usePrint">打印</button>

</div>

</template>

<script>

export default{

setup() {

console.log('执行setup的this',this);

const print = function(){

console.log(this.$refs.div.innerText);

}

const usePrint = function(){

console.log('执行usePrint的this',this);

this.print()

}

return {

print,usePrint

}

},

}

输出:
vue/composition-api:
vue2.6+vue/composition-api的this和vue2.7中的this不同?
vue2.7:vue2.6+vue/composition-api的this和vue2.7中的this不同?
然后发现vue3中也可以获取这个this,只是和2.6的this不同不是组件实例所以用不了this.$refs但是可以使用返回的方法
vue2.6+vue/composition-api的this和vue2.7中的this不同?
虽然可以通过vue2.7提供的getCurrentInstance 获取组件实例
但是这个问题的原因是什么呢?


回答:

如果开始使用 composition api 了就要开始放弃使用 this 了,具体可以查看这里的文档 组合式 API:setup() | Vue.js

以上是 vue2.6+vue/composition-api的this和vue2.7中的this不同? 的全部内容, 来源链接: utcz.com/p/933338.html

回到顶部