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 相关文章推荐
js判断FCKeditor内容是否为空的两种形式
May 14 Javascript
JS 实现图片直接下载示例代码
Jul 22 Javascript
js倒计时抢购实例
Dec 20 Javascript
jQuery中inArray方法注意事项分析
Jan 25 Javascript
js实现数组冒泡排序、快速排序原理
Mar 08 Javascript
微信小程序 Record API详解及实例代码
Sep 30 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
Nov 10 Javascript
vue router demo详解
Oct 13 Javascript
React Native之prop-types进行属性确认详解
Dec 19 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
Apr 08 Javascript
原生js实现自定义难度的扫雷游戏
Jan 22 Javascript
如何在 Vue 表单中处理图片
Jan 26 Vue.js
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编程效率的方法
2013/11/07 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
功能强大的php文件上传类
2016/08/29 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
javascript 面向对象编程基础 多态
2009/08/21 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
node.js超时timeout详解
2014/11/26 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
利用python编写一个图片主色转换的脚本
2017/12/07 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
请解释流与文件有什么不同
2016/07/29 面试题
英语专业毕业生自我鉴定
2013/11/09 职场文书
车间组长岗位职责
2013/12/20 职场文书
房产继承公证书
2014/04/09 职场文书
捐资助学倡议书
2014/04/15 职场文书
企业形象策划方案
2014/05/29 职场文书
九寨沟导游词
2015/02/02 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers