问题代码如下:
vue
<script setup lang="ts">
const { title } = defineProps<{
title: string;
}>();
</script>
<template>
<div class="property-input">{{ title }}</div>
</template>
解决:因为析构赋值,变量title
相当于const title = props.title
,它只是一个普通字符串类型,并非 Vue 中的响应式类型。
又因为setup
实际上只执行一次,所以title
的值只会是最初创建组件时的值,不会随props
一起变化,除非在onBeforeUpdate
时重新赋值。
结论:不要对props
实用析构赋值,直接引用props
。
vue
<script setup lang="ts">
const props= defineProps<{
title: string;
}>();
</script>
<template>
<div class="property-input">{{ props.title }}</div>
</template>