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 文件大小判断的实现代码
Apr 07 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
Nov 21 Javascript
input输入框鼠标焦点提示信息
Mar 17 Javascript
AngularJS基础 ng-include 指令示例讲解
Aug 01 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
Sep 05 Javascript
jQuery弹出窗口打开链接的实现代码
Dec 24 Javascript
PHP7新特性简述
Jun 11 Javascript
详解vue中的父子传值双向绑定及数据更新问题
Jun 13 Javascript
基于layui轮播图满屏是高度自适应的解决方法
Sep 16 Javascript
vue 中固定导航栏的实例代码
Nov 01 Javascript
vue 手机物理监听键+退出提示代码
Sep 09 Javascript
JS新手入门数组处理的实用方法汇总
Apr 07 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/07/15 PHP
PHP4实际应用经验篇(5)
2006/10/09 PHP
dedecms系统常用术语汇总
2007/04/03 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
用JavaScript实现类似于ListBox功能示例代码
2014/03/09 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
利用vue实现模态框组件
2016/12/19 Javascript
Three.js基础部分学习
2017/01/08 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
对Python中gensim库word2vec的使用详解
2018/05/08 Python
python gdal安装与简单使用
2019/08/01 Python
使用python去除图片白色像素的实例
2019/12/12 Python
python Zmail模块简介与使用示例
2020/12/19 Python
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
房地产营销策划方案
2014/02/08 职场文书
装饰活动策划方案
2014/02/11 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
个人工作总结范文2014
2014/11/07 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
毕业欢送会致辞
2015/07/29 职场文书
MySQL七大JOIN的具体使用
2022/02/28 MySQL