news 2026/5/8 21:47:39

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/5/6 15:08:56

Winston Strawn与Taylor Wessing UK拟合并,携手打造顶级跨大西洋律师事务所

Winston Taylor将秉承共同的愿景与文化&#xff0c;携手打造在重大诉讼、关键交易、战略性知识产权及私人财富领域具备全球影响力的跨大西洋法律服务平台 Winston & Strawn与Taylor Wessing旗下以英国为主导的业务今日宣布&#xff0c;双方拟推进合并&#xff0c;并将以全新…

作者头像 李华
网站建设 2026/5/6 6:17:40

5分钟快速上手:Vue.js年会抽奖系统终极指南

5分钟快速上手&#xff1a;Vue.js年会抽奖系统终极指南 【免费下载链接】lucky-draw 年会抽奖程序 项目地址: https://gitcode.com/gh_mirrors/lu/lucky-draw 还在为年会抽奖程序发愁吗&#xff1f;这款基于Vue.js的抽奖应用可能是你需要的完美解决方案。无需复杂后端部…

作者头像 李华
网站建设 2026/5/5 7:51:40

付费墙绕过技术终极指南:5个步骤轻松访问付费内容

在当前信息爆炸的时代&#xff0c;如何高效获取优质内容成为每个用户面临的挑战。Bypass Paywalls Clean作为一款创新的内容访问工具&#xff0c;为用户提供了突破付费限制的智能解决方案&#xff0c;让信息获取更加便捷高效。 【免费下载链接】bypass-paywalls-chrome-clean …

作者头像 李华
网站建设 2026/5/2 6:49:49

美食探店点评:LobeChat模仿大众点评风格

LobeChat&#xff1a;当AI聊天界面不再只是“对话框” 在今天&#xff0c;几乎每个开发者都接触过大语言模型——无论是用 curl 调个 OpenAI API&#xff0c;还是在网页上和 ChatGPT 闲聊几句。但真正让AI走进工作流、变成可用工具的&#xff0c;往往不是模型本身&#xff0c;而…

作者头像 李华
网站建设 2026/5/7 20:09:13

ComfyUI-Manager终极指南:3分钟搞定AI绘画插件管理

ComfyUI-Manager终极指南&#xff1a;3分钟搞定AI绘画插件管理 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager 还在为ComfyUI复杂的插件安装而头疼吗&#xff1f;ComfyUI-Manager就是你的救星&#xff01;这个强大的管…

作者头像 李华