我正在使用Quasar构建我的Vue应用程序,并希望使用
我已经创建了一个名为
"
那么,如果我不事先知道v-model的值,该如何编写
我想出了下面的解决方案,似乎可以工作,因为我认为传递下来的v-model会覆盖基础组件的v-model。
但我想问一下,以确保我没有搞砸。
这是正确的做法吗?它看起来有些hacky。
q-input
创建基础组件(又称表示、哑或纯组件)。我已经创建了一个名为
VInput.vue
的SFC作为我的基础组件,它看起来像这样:<template>
<q-input
outlined
class="q-mb-md"
hide-bottom-space
/>
</template>
然后我创建了一个名为TestForm.vue
的SFC,它看起来像这样:
<template>
<q-form>
<v-input label="Email" v-model="email" />
</q-form>
</template>
<script setup lang="ts">
import VInput from './VInput.vue';
import { ref } from 'vue';
const email = ref('john@example.com');
</script>
"
label="Email" v-model="email"
部分被传递到我的 VInput.vue
基础组件,并在页面上正确呈现。
但是,在 VInput.vue
基础组件的 q-input
上存在 TypeScript 错误,因为 q-input
需要一个 v-model:
`Type '{ outlined: true; class: string; hideBottomSpace: true; "hide-bottom-space": boolean; }' is not assignable to type 'IntrinsicAttributes & VNodeProps & AllowedComponentProps & ComponentCustomProps & QInputProps'.`
`Property 'modelValue' is missing in type '{ outlined: true; class: string; hideBottomSpace: true; "hide-bottom-space": boolean; }' but required in type 'QInputProps'.ts(2322)`.
那么,如果我不事先知道v-model的值,该如何编写
VInput.vue
基础组件呢?我想出了下面的解决方案,似乎可以工作,因为我认为传递下来的v-model会覆盖基础组件的v-model。
但我想问一下,以确保我没有搞砸。
这是正确的做法吗?它看起来有些hacky。
<template>
<q-input v-model="inputText" outlined class="q-mb-md" hide-bottom-space />
</template>
<script setup lang="ts">
const inputText = '';
</script>
v-model="textProp"
)。这是在Vue 3.2.x版本下发生的;我没有使用TypeScript,但我不认为这是问题所在? - undefined