Vue.js 组件

来源:互联网 发布:php 通过域名获取ip 编辑:程序博客网 时间:2024/05/23 01:14
  • 组件可以扩展 HTML 元素,封装可重用的代码。
   组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树
  • 全局组件,在函数最外层注册,注册后和普通标签类似,所有实例都可使用
<div id="app">    <runoob></runoob></div><script>// 注册Vue.component('runoob', {  template: '<h1>自定义组件!</h1>'})// 创建根实例new Vue({  el: '#app'})</script>
  • 局部组件
    局部组件要在实例中注册,只能在当前实例中使用。
<script>var Child = {  template: '<h1>自定义组件!</h1>'}// 创建根实例new Vue({  el: '#app',  components: {    'runoob': Child  }})</script>
  • Prop属性
    prop 是父组件用来传递数据的一个自定义属性。
    父组件的数据需要通过 props 把数据传给子组件,子组件需要显式地用 props 选项声明 “prop”
//在这里,child表示父组件,span表示子组件,通过xxx="hello!"为父组件设置prop属性值,在子组件用 props: ['xxx']声明再使用。<div id="app">    <child xxx="hello!"></child></div><script>Vue.component('child', {  props: ['xxx'],  template: '<span>{{ xxx }}</span>'})new Vue({  el: '#app'})</script>
  • 动态 Prop
    类似于用 v-bind 绑定 HTML 特性到一个表达式,也可以用 v-bind 动态绑定 props 的值到父组件的数据中。每当父组件的数据变化时,该变化也会传导给子组件
//父组件的数据是和input文本框双向绑定的,子组件的prop属性依托于父组件的数据,所以当文本框变化时,子组件的值也变化了。<div id="app">      <input v-model="parentMsg">      <child v-bind:message="parentMsg"></child></div><script>Vue.component('child', {  props: ['message'],  template: '<span>{{ message }}</span>'})// 创建根实例new Vue({  el: '#app',  data: {    parentMsg: '父组件内容'  }})</script>
  • Prop 验证
    组件可以为 props 指定验证要求。
    prop 是一个对象而不是字符串数组时,它包含验证要求
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      }    }  }})
原创粉丝点击