[问题] Vue3 defineProps的响应问题

楼主: heavenbetula (绿草)   2024-04-16 15:16:51
想请问各位写Vue3的大大
<script setup>
const props = defineProps();
const { name } = props;
/*
由于上行这样写会让失去响应性,name如果更新,画面不会更新
因此需改成:
const { name } = toRefs(props);
*/
</script>
<template>
<h1>Hello {{name}}</h1>
</template>
其中我有疑问的是如果原本会失去响应的写法:
const props = defineProps();
const { name } = props;
改成 const { name } = defineProps();
就可以不用透过toRefs,也能正常动作
但不明白的是
const props = defineProps();
const { name } = props;

const { name } = defineProps();
不是一样的写法吗?
为什么结果会不一样呢?
作者: ck574b027 (荒围!定厝!贼!妹!)   2024-04-16 16:32:00
因为它只是macro。如果只有template会用到,最好写成defineProps(['name'])
作者: ssccg (23)   2024-04-16 16:45:00
是你奇怪吧为什么prop的字段不写在defineProps你另外写一个 { name } 是想干麻
作者: cloki (夜云天)   2024-04-16 20:03:00
而且你写法1那种本来就大概需要watch/computed才会响应吧
作者: ck574b027 (荒围!定厝!贼!妹!)   2024-04-16 21:38:00
可以看看产出的js有何差别
作者: crazwade (crazwade)   2024-05-05 11:46:00
defineProps<{name: string}>(); 不用解构可以直接用name吧

Links booklink

Contact Us: admin [ a t ] ucptt.com