父版本
<template>
<input :type="computedType"/>
</template>
<script setup>
import { ref, computed } from 'vue';
const props = defineProps({
type: {
required: false,
type: String,
default: 'text',
},
});
const showPassword = ref(false);
const computedType = computed(() => {
if (props.type === 'password') {
return showPassword.value ? 'text' : 'password';
}
return props.type;
});
</script>
<script>
export default {
data() {
return {
uuid: getRandomUuid(),
}
}
}
</script>
子版本
<template>
<input :type="computedType"/>
</template>
<script>
import Parent from '~/components/parent.vue'
export default {
extends: Parent
}
</script>
在Vue 3中,我有一个从parent.vue
继承的child.vue
组件,我在parent.vue
中定义了一个computedType
计算属性,但在child.vue
中缺少该属性,但是,在parent.vue
中定义的uuid
在child.vue
中可以访问。
[Vue警告]:在呈现期间访问了属性“computedType”,但未在示例上定义该属性。
如何在child.vue
中获取computedType
和<script setup>
中定义的parent.vue
的任何其他属性?
真的很感谢提供的任何帮助!
更新:
只有在<script>
(而不是setup()
)中定义所有属性,而不是在<script setup>
中定义所有属性,才可以访问这些属性
2条答案
按热度按时间thigvfpy1#
有一些特定的示例可以使用多个script标签,这些示例都在文档中进行了概述。但是,除了这3个特定的用例之外,您不应该使用多个script标签。您为一个数据变量使用单独的script标签的情况不是有效的用例。
我建议完全使用options API(唯一支持“extends”选项的API)编写组件,或者完全使用composition API编写组件,其中使用composable functions来有效地扩展组件
jvlzgdj92#
({计算类型});试试这个