{site_name}

{site_name}

🌜 搜索

在Vue 3.0中,当在子组件的prop的默认函数中访问this时,this将指

前端 𝄐 0
vue使用promise,vue property or method,vue在data中访问method方法,vue访问data,vue中使用promise,vue property or method is not
在Vue 3.0中,当在子组件的prop的默认函数中访问this时,this将指向undefined,因为在创建组件实例之前,该值尚不存在。这是由于在Vue 3.0中,默认函数是在组件实例化之前计算的。

例如,假设有以下的子组件:


<template>
<div>{{ message }}</div>
</template>

<script>
export default {
props: {
propMessage: {
type: String,
default: function() {
return this.message
}
}
},
data() {
return {
message: 'Hello'
}
}
}
</script>


在这个组件中,我们定义了一个prop叫做propMessage,它的默认值是一个返回this.message的函数。然而,当我们使用这个组件时,我们发现propMessage的值是undefined,而不是'Hello'。

为了解决这个问题,我们可以使用setup()函数来访问组件实例中的属性,如下所示:


<template>
<div>{{ propMessage }}</div>
</template>

<script>
import { defineComponent } from 'vue'

export default defineComponent({
props: {
propMessage: {
type: String,
default: ''
}
},
setup(props, { attrs }) {
console.log(props.propMessage) // 'Hello'

const message = 'Hello'
return {
message
}
}
})
</script>


在这个例子中,我们使用了defineComponent()函数来定义组件,并使用setup()函数来访问组件实例中的属性。此外,我们还将propMessage的默认值设置为一个空字符串,以避免在访问this时出现问题。