{site_name}

{site_name}

🌜 搜索

Vue 3.0的属性(attribute)强制行为指的是在使用组件时,只有在组件

前端 𝄐 0
vue强制缓存,vue强制销毁与重置组件,vue强制组件刷新,vue强制刷新组件的方法,vue强制重置组件,vue强制更新数组
Vue 3.0的属性(attribute)强制行为指的是在使用组件时,只有在组件的props属性中声明过的属性才能被传入组件,否则会抛出警告或错误。

具体来说,在Vue 3.0中,当一个组件接收一个prop时,它不再允许通过HTML属性传递非声明的prop值。相反,只有在组件的props选项中显式地声明了该prop后,才可以通过HTML属性传递该prop的值。如果尝试将未声明的prop传递给组件,则会收到一个警告或错误。

以下是一个示例组件,在props选项中定义了一个名为"message"的prop:


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

<script>
export default {
name: 'MyComponent',
props: {
message: String
}
}
</script>


如果我们想要在使用该组件时传递一个未声明的prop,如下所示:


<MyComponent title="Hello World" message="Welcome to my website!" />


在Vue 3.0中,这样的用法将无效,并会导致以下警告:


[Vue warn]: Extraneous non-props attributes (title) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If you are using v-bind with class or style, consider using v-bind="object" syntax instead.


要解决这个问题,我们可以通过在props选项中添加"title"来声明该prop,或者将其从HTML属性中删除。