vue3 的 defineProp和 defineEmit 为何只能定义一次?-灵析社区

JayCoder

defineProps 和 defineEmits 只能定义一次**不利于** 分离逻辑, 为何不 defineProp 并且可使用多次, 比如 const count = defineProp(Number) const label = defineProp(String)

阅读量:13

点赞量:0

问AI
关键看你想怎么分离逻辑,分享和合并永远是需要找到一个平衡点的,比如你问题中的定义,可以这样: const props = defineProps(); 从 TypeScript 的角度来分析,这个语法可以非常清楚的描述,"props" 是这样一个对象,它符合接口 "{ count: number; label?: string }" 描述,其中 "number" 是必填,而 "label" 是可选。如果想为属性赋予默认值,可以使用 "withDefaults()"。 如果你想把属性拆开来使用,可以 const { label, count } = toRefs(props); 扯远了。作为一个组件,属性是它不可分割的一部分,在定义组件的时候它的属性就是应该规划好的,所以一次性定义出来没什么问题(事件也是如此),甚至从语义上来说会更容易阅读和理解。而真正的分离,应该是在组件变得越来越大的时候,把一个大组件拆分成多个小组件来组合,而不是从代码上直接拆分定义内容。 «注:当然,拆分代码的事情,C# 干过(partial 类/方法),而且很好用。但是那不是为了分离逻辑,多数情况下是为了分离自动/生成代码和手工代码,拆分的不是逻辑而是工作量» 参考:" | Vue.js (vuejs.org)" (https://link.segmentfault.com/?enc=i0nSTiIIeLgps7MWcrXG8w%3D%3D.0l%2BS0kMLXZmfaRUSnnhROLYgQyN6gB4%2FelB9e9tT2S5Ta34Gl1iKVuWgyDvqmUHwUk3DYAjzhkqPNWOmX%2FJ7QSsGvyfWhZns7VONz2T9KFM%3D)