news 2026/6/3 12:29:40

VUE3:深入浅出defineProps 的 default 写法差异

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VUE3:深入浅出defineProps 的 default 写法差异

为什么有不同的写法?

这是 Vue 的设计约定:

  • 基本类型(String, Number, Boolean):直接写默认值
  • 引用类型(Object, Array, Function):必须用工厂函数返回默认值

为什么引用类型要用函数?因为如果直接写对象,所有组件实例会共享同一个对象引用,修改一个会影响所有组件!用函数每次返回一个新对象,就不会互相影响了。

完整示例

<template> <div class="props-demo"> <h2>defineProps Default 写法示例</h2> <p>姓名: {{ name }}</p> <p>年龄: {{ age }}</p> <p>是否激活: {{ isActive }}</p> <p>用户信息: {{ userInfo.nickname }} - {{ userInfo.level }}</p> <p>标签列表: {{ tags.join(', ') }}</p> <p>格式化金额: {{ formatPrice(100) }}</p> </div> </template> <script setup> // ======================================== // defineProps 的 default 写法详解 // ======================================== const props = defineProps({ // ========== 基本类型:直接写默认值 ========== // String 类型 name: { type: String, default: '游客' // ✅ 直接写字符串 }, // Number 类型 age: { type: Number, default: 18 // ✅ 直接写数字 }, // Boolean 类型 isActive: { type: Boolean, default: false // ✅ 直接写布尔值 }, // ========== 引用类型:必须用工厂函数 ========== // Object 类型 - 必须用函数返回! userInfo: { type: Object, // ❌ 错误写法:default: { nickname: '匿名', level: 1 } // ✅ 正确写法:用函数返回对象 default: () => ({ nickname: '匿名', level: 1 }) // 或者写成: // default() { // return { nickname: '匿名', level: 1 } // } }, // Array 类型 - 必须用函数返回! tags: { type: Array, // ❌ 错误写法:default: ['默认标签'] // ✅ 正确写法: default: () => ['默认标签'] }, // Function 类型 - 比较特殊 formatPrice: { type: Function, // 函数类型的默认值,直接写函数即可 default: (price) => `¥${price.toFixed(2)}` } }) // 使用 props console.log(props.name, props.age) </script>

总结:

基本类型string、number、Boolean

直接写值:

default:'默认文字'

default:0

default:false

引用类型Object、Array

用工厂函数:

default: ( ) => ({key: value })

default: ( ) => [item1,item2]

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 10:32:15

视频去水印在线工具有哪些?可以试试这10个视频去水印软件

在当今信息爆炸的时代&#xff0c;视频创作和分享变得前所未有的普及。然而&#xff0c;很多时候我们会遇到视频中带有水印的问题&#xff0c;无论是为了保护版权还是展示品牌&#xff0c;水印都显得必不可少。然而&#xff0c;在某些特定的场景下&#xff0c;我们可能需要去除…

作者头像 李华
网站建设 2026/5/30 8:11:54

MusicFree插件快速入门:如何免费打造专属音乐播放器

MusicFree插件快速入门&#xff1a;如何免费打造专属音乐播放器 【免费下载链接】MusicFreePlugins MusicFree播放插件 项目地址: https://gitcode.com/gh_mirrors/mu/MusicFreePlugins 想要快速提升音乐播放体验吗&#xff1f;MusicFree插件系统正是你需要的解决方案&a…

作者头像 李华
网站建设 2026/6/2 17:42:03

GPT-SoVITS语音合成:从预处理到推理全流程

GPT-SoVITS语音合成&#xff1a;从预处理到推理全流程 你有没有想过&#xff0c;只需一分钟的录音&#xff0c;就能让AI用你的声音说话&#xff1f;这不是科幻电影的情节&#xff0c;而是如今通过 GPT-SoVITS 就能实现的真实技术。这个开源项目正在重新定义语音克隆的门槛——…

作者头像 李华
网站建设 2026/6/2 10:52:27

ComfyUI插件管家:3分钟学会智能管理AI绘画工具集

ComfyUI插件管家&#xff1a;3分钟学会智能管理AI绘画工具集 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager 还在为ComfyUI插件的安装、更新和兼容性问题而烦恼吗&#xff1f;ComfyUI-Manager正是你需要的智能解决方案…

作者头像 李华
网站建设 2026/6/1 9:47:42

MTKClient终极指南:联发科设备调试的完整解决方案

MTKClient终极指南&#xff1a;联发科设备调试的完整解决方案 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款专为联发科设备设计的开源调试工具&#xff0c;通过图形化界面…

作者头像 李华
网站建设 2026/5/31 19:49:44

ThinkPad双风扇终极静音指南:TPFanCtrl2从入门到精通

还在忍受ThinkPad风扇的"高速运转模式"吗&#xff1f;TPFanCtrl2这款专为Windows 10/11设计的智能风扇控制工具&#xff0c;能让你在保持设备凉爽的同时享受图书馆般的安静。无论是深夜码字还是重要会议&#xff0c;都不再被风扇噪音打扰。 【免费下载链接】TPFanCtr…

作者头像 李华