news 2026/8/21 0:38:43

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/8/20 11:32:03

第五届Mohammed bin Rashid Al Maktoum全球水资源奖启动

• Align指出&#xff0c;低效的资本结构和股东回报大幅缩水是导致Coway估值偏低的核心原因 • 信函列出强化资本配置和公司治理的七项关键举措 • Align敦促Coway于2026年1月30日前公布更具体、更完善的价值提升计划Align Partners Capital Management Inc. (“Align Partners…

作者头像 李华
网站建设 2026/8/21 19:21:08

c语言函数2

1&#xff0c;static与externstatic 是 静态 的意思 可以用来&#xff1a;修饰局部变量、全局变量、函数extern 是用来声明外部符号的2&#xff0c;作用域一个变量在哪里可以使用&#xff0c;哪里就是他的作用域局部变量的作用域就是在局部&#xff0c;生命周期在局部全局则在全…

作者头像 李华
网站建设 2026/8/21 17:38:45

飞书多维表格+LobeChat打造智能办公新范式

飞书多维表格 LobeChat&#xff1a;用自然语言驱动业务的智能办公实践 在企业数字化转型持续推进的今天&#xff0c;一个看似简单却长期困扰组织的问题始终存在&#xff1a;数据越来越多&#xff0c;系统越来越复杂&#xff0c;但人与系统的交互方式却依然原始。 我们每天都…

作者头像 李华
网站建设 2026/8/21 12:59:33

轻松下载Google Drive文件:无需API密钥的Python脚本指南

轻松下载Google Drive文件&#xff1a;无需API密钥的Python脚本指南 【免费下载链接】gdrivedl Google Drive Download Python Script 项目地址: https://gitcode.com/gh_mirrors/gd/gdrivedl 还在为Google Drive大文件下载烦恼吗&#xff1f;遇到下载配额限制或复杂配置…

作者头像 李华
网站建设 2026/8/20 12:53:54

Mac微信防撤回插件WeChatIntercept完整使用教程

Mac微信防撤回插件WeChatIntercept完整使用教程 【免费下载链接】WeChatIntercept 微信防撤回插件&#xff0c;一键安装&#xff0c;仅MAC可用&#xff0c;支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 在商务沟通和团队协作中&#xf…

作者头像 李华
网站建设 2026/8/21 17:30:32

Balena Etcher终极指南:轻松制作系统启动盘的免费神器

Balena Etcher终极指南&#xff1a;轻松制作系统启动盘的免费神器 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 在数字化时代&#xff0c;制作系统启动盘已成为…

作者头像 李华