宜城网站开发,85同城找工作招聘,网站的开发建设费,机械网站建设营销在 Vue 3 中#xff0c;除了运行时声明这种常见方式#xff0c;还可以通过基于类型的声明、解构赋值等方式来接收 props#xff0c;下面为你详细介绍#xff1a;
1. 基于类型的声明
这种方式借助 TypeScript 的类型系统来定义 props#xff0c;具有类型检查和代码提示的…在 Vue 3 中除了运行时声明这种常见方式还可以通过基于类型的声明、解构赋值等方式来接收 props下面为你详细介绍
1. 基于类型的声明
这种方式借助 TypeScript 的类型系统来定义 props具有类型检查和代码提示的优势让代码更加健壮和易于维护。
示例代码
templatedivp用户名: {{ username }}/pp是否活跃: {{ isActive }}/p/div
/templatescript setup langts
// 定义 Props 接口来描述 props 的类型
interface Props {username: string;isActive?: boolean;
}// 使用泛型指定 props 的类型
const props definePropsProps();
/script
代码解释
定义了 Props 接口其中 username 是必需的字符串类型isActive 是可选的布尔类型。definePropsProps() 通过泛型指定 props 的类型从而完成 props 的接收。
2. 解构赋值
可以对 defineProps 返回的 props 对象进行解构赋值方便在模板中直接使用 props。不过需要注意的是直接解构会失去响应式可使用 toRefs 来解决这个问题。
示例代码
templatedivp标题: {{ title }}/pp描述: {{ description }}/p/div
/templatescript setup
import { toRefs } from vue;// 运行时声明 props
const props defineProps({title: {type: String,required: true},description: {type: String,default: 暂无描述}
});// 使用 toRefs 解构 props 以保持响应式
const { title, description } toRefs(props);
/script
代码解释
首先使用运行时声明的方式定义 props。然后使用 toRefs 对 props 进行解构这样 title 和 description 就保持了响应式当父组件传递的 props 发生变化时子组件能够相应更新。
3. 结合 withDefaults 辅助函数
withDefaults 辅助函数可用于给基于类型声明的 props 设置默认值增强了类型声明方式的灵活性。
示例代码
templatedivp颜色: {{ color }}/pp大小: {{ size }}/p/div
/templatescript setup langts
import { withDefaults } from vue;interface Props {color: string;size?: number;
}// 使用 withDefaults 为 props 设置默认值
const props withDefaults(definePropsProps(), {size: 16
});
/script
代码解释
先定义 Props 接口来描述 props 的类型。使用 withDefaults 函数包裹 definePropsProps()并传入一个对象来设置默认值这里为 size 设置了默认值 16。