-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
defineProps 默认对 boolean 类型的 prop 自动转换为 false 不符合语义 #10674
Comments
Duplicate of #9882 See also: vuejs/vue#4792 vuejs/vue#7646 |
麻烦认真看下别人的提出的 issue ,不要直接选择关闭,你对我的 issue 有什么问题请答复,可以互相交流。我查过别人提出的 issue,别人没有正确的的回复,而且你回给我的链接都是被关闭的。我正是因为你们关闭了这些issues 才重新提的。 |
This is a known issue that has been discussed for several times. Changing the behavior will be a breaking change that we cannot make at the point in Vue 3. |
本身就是错的,就一直错下去吗?一个新的东西,前期难免有破坏性更改。等这个 defineProps 用的越来越多就越难动。 |
@Justineo at least consider providing it via a feature flag. The behaviour is just plain out wrong and a major tripping stone with TS. |
defineProps 自动编译出默认值,这个行为太奇怪了,出了问题排查起来真困难!!!, |
Vue version
3.4.21
Link to minimal reproduction
https://cn.vuejs.org/guide/components/props
Steps to reproduce
一:我很难理解官方回答的:‘’为了对齐原生 HTML 标签的 boolean attributes 的行为‘’
首先 props 和 attributes 在 vue 中本意是不同的,不管是声明,传值还是使用,props 是在 vue 这种框架中独有的,这是你们发明的概念。它不应该贴合所谓的:‘’原生 HTML 标签的 boolean attributes 的行为‘’。它更应该符合直觉(props 和 attributes 本来你就特地做了区分)。
二:就算要满足‘’为了对齐原生 HTML 标签的 boolean attributes 的行为‘’。如果我声明一个类型只是 boolean 类型,你将其结果转换为 false 我能理解。但如果我声明一个类型是'可选的'是可以为 undefined,依然默认转换为 false 那这就很莫名其妙了。这意味着这个所谓的对应原生的 attr 可以传 boolean 也可以什么都不传。那我不传值肯定就是默认 undefined 。官方文档明确说明只有在类型为 boolean 时,默认值才自动转为 false
上面这个类型声明导致我,不得不做大量的默认值声明。我明确声明了
submitText
是可选的,但依然给我转为了false, 而且 VueNode 里也包含了 undefined 类型。这非常反直觉。而且也不满足你答复的 ‘’为了对齐原生 HTML 标签的 boolean attributes 的行为‘’What is expected?
如果要满足 ‘’为了对齐原生 HTML 标签的 boolean attributes 的行为‘’ 的话,我建议只有在类型为 boolean 时才默认转换为 false, 当明确指明该 prop 是可选和 undefined 时,默认保持原意:undefined (因为在 js 中没传值就是 undefined)
What is actually happening?
现在的问题在于类型中只要包含了 boolean 类型就默认转换为 false
System Info
No response
Any additional comments?
No response
The text was updated successfully, but these errors were encountered: