其他分享
首页 > 其他分享> > 组件化高级

组件化高级

作者:互联网

目录

插槽slot

插槽的基本使用

  1. 插槽的基本使用:
  2. 插槽的默认值:< button>按钮
  3. 如果有多个值,同时放入到组件进行替换,一起作为替换元素

具名插槽的使用

指定slot的name,并在引用组件的时候给定是哪一个插槽

<div id="app">
  <cpn>
    <button slot="left"><</button>
    <span slot="center">标题</span>
    <button slot="right">···</button>
  </cpn>
</div>

<template id="cpn">
  <div>
    <slot name="left"><span>左边</span></slot>
    <slot name="center"><span>中间</span></slot>
    <slot name="right"><span>右边</span></slot>
  </div>
</template>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好啊'
    },
    components: {
      cpn: {
        template: `#cpn`
      }
    }
  })
</script>

编译作用域

<div id="app">
  <!-- 这里是可以显示的,因为这个cpn属于app在Vue实例中 -->
  <cpn v-show="isShow"></cpn>
</div>

<template id="cpn">
  <div>
    <h2>我是子组件</h2>
    <p>我是内容,哈哈哈</p>
    <!-- 这里不能显示,因为这个isShow属于组件,在作用域里查找isShow为false -->
    <button v-show="isShow">按钮</button>
  </div>
</template>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好啊',
      isShow: true
    },
    components: {
      cpn: {
        template: `#cpn`,
        data() {
          return {
            isShow: false
          }
        }
      }
    }
  })
</script>

作用域插槽:准备

例:想让父组件换一种格式输出,但是拿不到子组件中的值

<div id="app">
  <cpn></cpn>
  <cpn>
    <!--目的是获取子组件中的pLanguages-->
    <spn v-for="item in pLanguages">
      {{item}} -
    </spn>
  </cpn>
</div>

<template id="cpn">
  <div>
    <slot>
      <ul>
        <li v-for="item in pLanguages">
          {{item}}
        </li>
      </ul>
    </slot>
  </div>
</template>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好啊'
    },
    components: {
      cpn: {
        template: `#cpn`,
        data() {
          return {
            pLanguages: ['JavaScript', 'C++', 'Java', 'C#', 'Python', 'Go', 'Swift']
          }
        }
      }
    }
  })
</script>

效果:

正确:

标签:cpn,作用域,插槽,app,高级,组件,data
来源: https://www.cnblogs.com/coderElian/p/15126511.html