vue-------特殊属性

vue api强化学习之-------特殊属性

vue api 特殊属性

  • is

长用于构建动态组件且基于 DOM 内模板的限制

  • slot

插槽,推荐使用2.6.0新出的v-slot
用于标记往哪个具名插槽中插入子组件内容。

  • scope

被 2.5.0 新增的 slot-scope 取代。推荐 2.6.0 新增的 v-slot
用于表示一个作为带作用域的插槽的 <template> 元素,它在 2.5.0+ 中被 slot-scope 替代
用于将元素或组件表示为作用域插槽

  • ref

ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例

  • key

key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes

  • slot-scope

推荐使用2.6.0新出的v-slot
用于将元素或组件表示为作用域插槽

父组件specialAttr.vue

<template>
  <div class="hello">
      <!-- v-for循环中通常使用key属性,标明每个元素的唯一性,利于虚拟dom算法 -->
      <div >
          <div v-for="item of data" :key="item">{{item}}</div>
      </div>
      <!-- 构建动态组件 -->
      <div :is="currentComp"></div>
      <button v-on:click="changeComponent">改变组件</button>
      <!-- 插槽 -->
      <index >
          <!-- 将插槽名为inex的内容传递到子组件名为index的插槽中 -->
          <div slot="index">在index中的slot中显示</div>
      </index>
   
    
   
  </div>
</template>

<script>
import Vue from 'vue'
import login from '../components/login.vue'
import index from '../components/index.vue'
export default {
  name: 'SpecialAttr',
  components:{
      index,
      login
  },
  data(){
      return {
          data:[1,2,3,4],
          currentComp:index
      }
  },
  methods:{
      changeComponent(){
          if(this.currentComp == login){
              this.currentComp = index
          }else {
              this.currentComp = login
          }

      }
  }

  
 
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

</style>

index.vue

<template>
  <div class="hello">
    <div v-color="'red'">
    我是index 组件
    </div>
    <!-- 定义名为index的插槽 -->
    <slot name="index"></slot>

  </div>
</template>

<script>

export default {
  name: 'index',
  directives:{
    color:function(el,binding){
      el.style.color = binding.value
    }
  }

}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.hello div {
    background:  green;
    width: 200px;
    height: 100px;
}
</style>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章