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 ajax dataType值为text json探索分享
Sep 23 Javascript
页面刷新时记住滚动条的位置jquery代码
Jun 17 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
Jul 28 Javascript
jquery简单实现网页层的展开与收缩效果
Aug 07 Javascript
浅析JS原型继承与类的继承
Apr 07 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
Aug 04 Javascript
ES6所改良的javascript“缺陷”问题
Aug 23 Javascript
javascript input输入框模糊提示功能的实现
Sep 25 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
vue加载完成后的回调函数方法
Sep 07 Javascript
react-router4按需加载(踩坑填坑)
Jan 06 Javascript
详解Node.js如何处理ES6模块
May 15 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP简洁函数小结
2011/08/12 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
PHP中phar包的使用教程
2017/06/14 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
matplotlib中legend位置调整解析
2017/12/19 Python
python如何实现内容写在图片上
2018/03/23 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
python实现电子产品商店
2019/02/26 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
python实现文件的分割与合并
2019/08/29 Python
python新手学习使用库
2020/06/11 Python
Django-imagekit的使用详解
2020/07/06 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
25道Java面试题集合
2013/05/21 面试题
撤诉申请书法院范本
2015/05/18 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS