VueJS组件之间通过props交互及验证的方式
发布时间 - 2026-01-11 03:05:26 点击率:次props 是父组件用来传递数据的一个自定义属性。父组件的数据需要通过 props 把数据传给子组件,子组件需要显式地用 props 选项声明 "prop"。

父组件通过props将数据传递给子组件
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<child message="hello world!">props传递给子组件</child>
</div>
<script>
//
Vue.component('child', {
// 声明 props
props: ['message'],
// 同样也可以在 vm 实例中像 “this.message” 这样使用
template: '<h1>{{ message }}</h1>'
})
// 创建根实例
new Vue({
el: '#app'
})
</script>
</body>
</html>
效果如图:
动态 props组建数据传递
类似于用 v-bind 绑定 HTML 特性到一个表达式,也可以用 v-bind 动态绑定 props 的值到父组件的数据中。每当父组件的数据变化时,该变化也会传导给子组件:
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<div>
<input v-model="parentMsg">
<br>
<child v-bind:message="parentMsg"></child>
</div>
</div>
<script>
// 注册
Vue.component('child', {
// 声明 props
props: ['message'],
// 同样也可以在 vm 实例中像 “this.message” 这样使用
template: '<span>{{ message }}</span>'
})
// 创建根实例
new Vue({
el: '#app',
data: {
parentMsg: '父组件内容'
}
})
</script>
</body>
</html>
效果如图:
v-bind 指令将 todo 传到每一个重复的组件中
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<ol>
<todo-item v-for="item in sites" v-bind:todo="item"></todo-item>
</ol>
</div>
<script>
Vue.component('todo-item', {
props: ['todo'],
template: '<li>{{ todo.text }}</li>'
})
new Vue({
el: '#app',
data: {
sites: [
{ text: 'Runoob' },
{ text: 'Google' },
{ text: 'Taobao' }
]
}
})
</script>
</body>
</html>
效果如下:
注意: props 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。
组件为 props 指定验证要求
props 是一个对象而不是字符串数组时,它包含验证要求:
JS
Vue.component('example', {
props: {
// 基础类型检测 (`null` 意思是任何类型都可以)
propA: Number,
// 多种类型
propB: [String, Number],
// 必传且是字符串
propC: {
type: String,
required: true
},
// 数字,有默认值
propD: {
type: Number,
default: 100
},
// 数组/对象的默认值应当由一个工厂函数返回
propE: {
type: Object,
default: function () {
return { message: 'hello' }
}
},
// 自定义验证函数
propF: {
validator: function (value) {
return value > 10
}
}
}
})
type 可以是下面原生构造器:
- String
- Number
- Boolean
- Function
- Object
- Array
type 也可以是一个自定义构造器,使用 instanceof 检测。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue
# props验证
# VueJS
# props
# 交互
# vue.js
# 验证
# vue props type设置多个类型
# vue组件开发props验证的实现
# Vue的子组件props如何设置多个校验类型
# 菜鸟
# 自定义
# 是一个
# 绑定
# 如图
# 默认值
# 也会
# 可以用
# 类似于
# 大家多多
# 而不是
# body
# js
# text
# div
# world
# min
# id
# vm
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
如何实现建站之星域名转发设置?
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
网站制作软件有哪些,制图软件有哪些?
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何在 Pandas 中基于一列条件计算另一列的分组均值
电商网站制作价格怎么算,网上拍卖流程以及规则?
,南京靠谱的征婚网站?
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Python文件操作最佳实践_稳定性说明【指导】
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
PythonWeb开发入门教程_Flask快速构建Web应用
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel如何记录自定义日志?(Log频道配置)
魔方云NAT建站如何实现端口转发?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
佛山网站制作系统,佛山企业变更地址网上办理步骤?
教你用AI将一段旋律扩展成一首完整的曲子
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
微信小程序 wx.uploadFile无法上传解决办法
Laravel如何使用Collections进行数据处理?(实用方法示例)
Linux安全能力提升路径_长期防护思维说明【指导】
再谈Python中的字符串与字符编码(推荐)
如何用wdcp快速搭建高效网站?
微信h5制作网站有哪些,免费微信H5页面制作工具?
googleplay官方入口在哪里_Google Play官方商店快速入口指南
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
🚀拖拽式CMS建站能否实现高效与个性化并存?
Laravel如何实现本地化和多语言支持?(i18n教程)
bootstrap日历插件datetimepicker使用方法
青岛网站建设如何选择本地服务器?
企业网站制作这些问题要关注
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何在景安服务器上快速搭建个人网站?
Laravel如何配置任务调度?(Cron Job示例)
音响网站制作视频教程,隆霸音响官方网站?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel如何自定义错误页面(404, 500)?(代码示例)
如何在腾讯云免费申请建站?
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
Java解压缩zip - 解压缩多个文件或文件夹实例
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
高防服务器如何保障网站安全无虞?
C++时间戳转换成日期时间的步骤和示例代码
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口

