组件

作者: Cherry丶小丸子 | 来源:发表于2019-12-24 10:50 被阅读0次

Vue.component("",{})
多次使用同一个组件,每个使用组件都会各自独立维护它的数据。因为你每用一次组件,就会有一个它的新实例被创建
一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝

data必须是一个函数
data(){
    return {
        
    }
}
或者
data:function(){
    return {
        
    }
}
或者
data:()=>{
    return {
        
    }
}

两种组件的注册类型:全局注册和局部注册

在组件的模板中,每个模板必须只有一个根元素。你可以将模板的内容包裹在一个父元素内,来修复这个问题

//错误的
Vue.component("c-hf",{
    data:function(){
        return {
            count: 0
        }
    },
    props:[],
    template:'
        <h3>{{ title }}</h3>
        <div v-html="content"></div>
    ',
})
//正确的
Vue.component("c-hf",{
    data:function(){
        return {
            count: 0
        }
    },
    props:[],
    template:'
        <div class="blog-post">
            <h3>{{ title }}</h3>
            <div v-html="content"></div>
        </div>
    ',
})

在组建上使用v-model

记住
<input v-model="searchText">
等于
<input
  v-bind:value="searchText"
  v-on:input="searchText = $event.target.value"
>
当用在组件上时,v-model 则会这样:
<custom-input
  v-bind:value="searchText"
  v-on:input="searchText = $event"
></custom-input>

为了让它正常工作,这个组件内的 <input> 必须:

将其 value 特性绑定到一个名叫 value 的 prop 上
在其 input 事件被触发时,将新的值通过自定义的 input 事件抛出
Vue.component('custom-input', {
  props: ['value'],
  template: `
    <input
      v-bind:value="value"
      v-on:input="$emit('input', $event.target.value)"
    >
  `
})
现在 v-model 就应该可以在这个组件上完美地工作起来了:
<custom-input v-model="searchText"></custom-input>

全局注册的组件在各自内部也都可以相互使用
局部注册的组件在其子组件中不可用,如果你希望 ComponentA 在 ComponentB 中可用,则你需要这样写:

var ComponentA = { /* ... */ }
var ComponentB = {
  components: {
    'component-a': ComponentA
  },
  // ...
}

注意在 ES2015+ 中,在对象中放一个类似 ComponentA 的变量名其实是 ComponentA: ComponentA 的缩写,即这个变量名同时是

相关文章

网友评论

      本文标题:组件

      本文链接:https://www.haomeiwen.com/subject/waptlctx.html