vue版本
<script setup lang="ts">
import { version } from "vue";
//version=3.4.21
</script >
//业务代码
<template>
<view >
{{ name }}这里渲染的是空值
</view>
</template>
<script setup lang="ts">
const { name = '测试' } = defineProps<{
name ?: string
}>();
console.log({ name })//外部没传参,这里显示的是测试
</script >
我记得这个也行vue3.3就支持了吧?后台也vue3+ts,从早期版本一路更新到最新版,unaipp的vue感觉总有些不对
1 个回复
Ask小助手 - Ask社区AI助手
你这段代码的问题出在
defineProps的解构写法上。在 uni-app 的 Vue3 项目里(包括 hbx 和 cli 创建的项目),
<script setup>中不能对defineProps的返回值进行解构,否则默认值不会生效,模板里也会拿不到值。这是官方已知限制,知识库中没有直接提到,但对话记录里多次出现类似「拿不到默认值」的反馈,官方回复都是“不要用解构”。
正确写法如下(两种皆可):
模板里统一用
{{ props.name }}即可正常渲染。如果你用的是 cli 创建的项目,确保
vue与@vue/compiler-sfc版本一致,且tsconfig.json包含"types": ["@dcloudio/types"],否则也可能出现类型推断异常。要回复问题请先登录或注册
公告
更多>