Skip to content

问题代码如下:

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>