VueJS组件之间通过props交互及验证的方式


Posted in Javascript onSeptember 04, 2017

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>

效果如图:

VueJS组件之间通过props交互及验证的方式

动态 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>

效果如图:

VueJS组件之间通过props交互及验证的方式

 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>

效果如下:

VueJS组件之间通过props交互及验证的方式

注意: 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 检测。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript编程起步(第七课)
Jan 10 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
Sep 06 Javascript
javascript解决innerText浏览器兼容问题思路代码
May 17 Javascript
jquery二级导航内容均分的原理及实现
Aug 13 Javascript
table insertRow、deleteRow定义和用法总结
May 14 Javascript
JavaScript中的时间处理小结
Feb 24 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
vue 项目中使用Loading组件的示例代码
Aug 31 Javascript
详解微信小程序文件下载--视频和图片
Apr 24 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
May 09 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 Javascript
JavaScript实现前端倒计时效果
Feb 09 Javascript
vue中component组件的props使用详解
Sep 04 #Javascript
React-Native中props具体使用详解
Sep 04 #Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
Sep 04 #Javascript
JS与HTML结合实现流程进度展示条思路详解
Sep 03 #Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
Sep 03 #Javascript
JS实现页面内跳转的简单代码
Sep 03 #Javascript
初探JavaScript 面向对象(推荐)
Sep 03 #Javascript
You might like
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
php使用正则验证中文
2016/04/06 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
总结Python编程中三条常用的技巧
2015/05/11 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
django 自定义过滤器的实现
2019/02/26 Python
pymysql的简单封装代码实例
2020/01/08 Python
Python3运算符常见用法分析
2020/02/14 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
如何用SQL语句进行模糊查找
2015/09/25 面试题
中间件的定义
2016/08/09 面试题
初中家长寄语
2014/04/02 职场文书
作风建设年度心得体会
2014/10/29 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
聘任书范文大全
2015/09/21 职场文书
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
python中super()函数的理解与基本使用
2021/08/30 Python