如何用条件检查覆盖 vue 组件道具?
How to override the vue component props with condition check?
override/extends 组件的推荐方法是什么?
例如。我想覆盖 vuetify 组件 VTextField:
<script>
import { VTextField } from 'vuetify/lib/components';
export default {
name: 'RTextField',
extends: VTextField,
props: {
outlined: {
default: true,
},
hideDetails: {
default: true,
},
},
};
</script>
上面我使用 extends 覆盖了一些默认的 props 值。
我想问一下如何有条件地设置 hideDetails
的值,例如根据特定的属性值 hint
,如果 RTextField
中有一个 hint
属性=],并且 hideDetails
应该设置为 false
`<r-text-field hint="xxx detail description">`
您可以包装 VTextField
而不是扩展,这样您就可以完全控制 props 以及如何将它们转发到包装的组件。
未测试:
<template>
<v-text-field
:outlined="outlined"
:hide-details="$attrs.hint ? false : hideDetails"
v-bind="$attrs"
v-on="$listeners"
/>
</template>
import { VTextField } from 'vuetify/lib/components'
export default {
name: 'RTextField',
components: {
VTextField,
},
// We'll pass attrs as props via v-bind
inheritAttrs: false,
props: {
outlined: {
type: Boolean,
default: true,
},
hideDetails: {
type: Boolean,
default: true,
},
},
}
override/extends 组件的推荐方法是什么? 例如。我想覆盖 vuetify 组件 VTextField:
<script>
import { VTextField } from 'vuetify/lib/components';
export default {
name: 'RTextField',
extends: VTextField,
props: {
outlined: {
default: true,
},
hideDetails: {
default: true,
},
},
};
</script>
上面我使用 extends 覆盖了一些默认的 props 值。
我想问一下如何有条件地设置 hideDetails
的值,例如根据特定的属性值 hint
,如果 RTextField
中有一个 hint
属性=],并且 hideDetails
应该设置为 false
`<r-text-field hint="xxx detail description">`
您可以包装 VTextField
而不是扩展,这样您就可以完全控制 props 以及如何将它们转发到包装的组件。
未测试:
<template>
<v-text-field
:outlined="outlined"
:hide-details="$attrs.hint ? false : hideDetails"
v-bind="$attrs"
v-on="$listeners"
/>
</template>
import { VTextField } from 'vuetify/lib/components'
export default {
name: 'RTextField',
components: {
VTextField,
},
// We'll pass attrs as props via v-bind
inheritAttrs: false,
props: {
outlined: {
type: Boolean,
default: true,
},
hideDetails: {
type: Boolean,
default: true,
},
},
}