<script setup lang="ts">  
const props = withDefaults(defineProps<{ visible?: boolean }>(), { visible: true })  
console.log("====== visible ======")  
console.log(props.visible) // undefined  
</script>  
<template>  
<!-- visible => true -->  
<view>{{ visible }}</view>  
</template>                                    - 发布:2024-01-02 18:37
 - 更新:2024-06-26 15:30
 - 阅读:757
 
【报Bug】使用 withDefaults 设置默认值后,在 script 中无法得到默认值
产品分类: uniapp/H5
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 12.7.1 (21G920)
HBuilderX类型: 正式
HBuilderX版本号: 3.99
浏览器平台: Chrome
浏览器版本: 120.0.6099.129
项目创建方式: HBuilderX
示例代码:
                                    
                                    
                                         
                                
                                                                                                操作步骤:
                                    
                                        PS:如果此 vue 文件作为一个页面使用时,会出现当前的问题
如果此 vue 文件作为一个组件使用时,无此问题
就是说,如果一个 vue 文件即想做一个独立页面又想在其他地方作为一个组件复用时,会出现此问题
<script setup lang="ts">  
const props = withDefaults(defineProps<{ visible?: boolean }>(), { visible: true })  
console.log("====== visible ======")  
console.log(props.visible) // undefined  
</script>  
<template>  
<!-- visible => true -->  
<view>{{ visible }}</view>  
</template>
                                     
                                
                                                                                                PS:如果此 vue 文件作为一个页面使用时,会出现当前的问题
如果此 vue 文件作为一个组件使用时,无此问题
就是说,如果一个 vue 文件即想做一个独立页面又想在其他地方作为一个组件复用时,会出现此问题
<script setup lang="ts">  
const props = withDefaults(defineProps<{ visible?: boolean }>(), { visible: true })  
console.log("====== visible ======")  
console.log(props.visible) // undefined  
</script>  
<template>  
<!-- visible => true -->  
<view>{{ visible }}</view>  
</template>                                    预期结果:
                                    
                                    
                                        <script setup lang="ts">  
const props = withDefaults(defineProps<{ visible?: boolean }>(), { visible: true })  
console.log("====== visible ======")  
console.log(props.visible) // true  
</script>  
<template>  
<!-- visible => true -->  
<view>{{ visible }}</view>  
</template>
                                     
                                
                                                                                                <script setup lang="ts">  
const props = withDefaults(defineProps<{ visible?: boolean }>(), { visible: true })  
console.log("====== visible ======")  
console.log(props.visible) // true  
</script>  
<template>  
<!-- visible => true -->  
<view>{{ visible }}</view>  
</template>                                    实际结果:
                                    
                                    
                                        <script setup lang="ts">  
const props = withDefaults(defineProps<{ visible?: boolean }>(), { visible: true })  
console.log("====== visible ======")  
console.log(props.visible) // undefined  
</script>  
<template>  
<!-- visible => true -->  
<view>{{ visible }}</view>  
</template>
                                     
                                
                                                            <script setup lang="ts">  
const props = withDefaults(defineProps<{ visible?: boolean }>(), { visible: true })  
console.log("====== visible ======")  
console.log(props.visible) // undefined  
</script>  
<template>  
<!-- visible => true -->  
<view>{{ visible }}</view>  
</template>                                    bug描述:
在 script setup 中 定义一个 props 后,使用 withDefaults 设置默认值时,在 template 中值正常,在 script 中值错误
            
            
            
            
1 个回复
1***@qq.com
请问在nvue页面能使用withDefaults吗