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 相关文章推荐
jQuery实现页面滚动时层智能浮动定位实例探讨
Mar 29 Javascript
JavaScript通过字符串调用函数的实现方法
Mar 18 Javascript
jQuery插件实现控制网页元素动态居中显示
Mar 24 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
May 03 Javascript
jquery删除table当前行的实例代码
Oct 07 Javascript
js实现类bootstrap模态框动画
Feb 07 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
详解vue-resource promise兼容性问题
Jun 20 Javascript
如何使用JS在HTML中自定义字符串格式化
Jul 20 Javascript
JS HTML图片显示Canvas 压缩功能
Jul 21 Javascript
如何使用VuePress搭建一个类型element ui文档
Feb 14 Javascript
Servlet返回的数据js解析2种方法
Dec 12 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新手上路(七)
2006/10/09 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
PHP实现图片压缩
2020/09/09 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
python私有属性和方法实例分析
2015/01/15 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
土木工程实习生自我鉴定
2013/09/19 职场文书
高分子材料与工程专业个人求职信
2013/12/15 职场文书
文明之星事迹材料
2014/05/09 职场文书
信用卡工资证明格式
2014/09/13 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
2014年绿化工作总结
2014/12/09 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL