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 带有滚动条的表格,标题固定,带排序功能.
Nov 13 Javascript
js获得页面的高度和宽度的方法
Feb 23 Javascript
jquery向上向下取整适合分页查询
Sep 06 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
Aug 06 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
JS实现批量上传文件并显示进度功能
Jun 27 Javascript
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
vue 中固定导航栏的实例代码
Nov 01 Javascript
vue表单数据交互提交演示教程
Nov 13 Javascript
JavaScript回调函数callback用法解析
Jan 14 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
Aug 03 Javascript
ElementUI实现el-form表单重置功能按钮
Jul 21 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
如何利用php+mysql保存和输出文件
2006/10/09 PHP
php正则表达式(regar expression)
2011/09/10 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
Python三元运算实现方法
2015/01/12 Python
python opencv读mp4视频的实例
2018/12/07 Python
django框架CSRF防护原理与用法分析
2019/07/22 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
Python requests获取网页常用方法解析
2020/02/20 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
企业为何需要商业计划书
2013/12/26 职场文书
业务总经理岗位职责
2014/02/03 职场文书
文员求职信
2014/07/15 职场文书
绿色校园广播稿
2014/10/13 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
教师工作证明范本
2015/06/12 职场文书
Python基础之元编程知识总结
2021/05/23 Python
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技