vue3:扩展缺少的父设置

dxxyhpgq  于 2022-11-17  发布在  Vue.js
关注(0)|答案(2)|浏览(174)

父版本

<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中定义的uuidchild.vue中可以访问。
[Vue警告]:在呈现期间访问了属性“computedType”,但未在示例上定义该属性。
如何在child.vue中获取computedType<script setup>中定义的parent.vue的任何其他属性?
真的很感谢提供的任何帮助!
更新:
只有在<script>(而不是setup())中定义所有属性,而不是在<script setup>中定义所有属性,才可以访问这些属性

thigvfpy

thigvfpy1#

有一些特定的示例可以使用多个script标签,这些示例都在文档中进行了概述。但是,除了这3个特定的用例之外,您不应该使用多个script标签。您为一个数据变量使用单独的script标签的情况不是有效的用例。
我建议完全使用options API(唯一支持“extends”选项的API)编写组件,或者完全使用composition API编写组件,其中使用composable functions来有效地扩展组件

jvlzgdj9

jvlzgdj92#

({计算类型});试试这个

相关问题