vue插槽--------默认插槽的基本使用

    科技2022-08-08  114

    以下只是学习过程中的笔记。

    一、插槽slot的简单理解

    对于vue中的插槽,我的理解是插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot> 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>标签。 可以动态的改变子组件内容,让子组件更具有拓展性。

    二、代码示范

    1.子组件插槽内容为空

    代码如下(示例):

    <body> <div id="app"> <cpn></cpn> <!-- 在父组件中使用插槽 --> <cpn><span>哈哈哈</span></cpn> <cpn><i>呵呵呵</i></cpn> <cpn></cpn> <cpn></cpn> <cpn></cpn> </div> <template id="cpn"> <div> <h2>我是组件</h2> <p>我是组件,哈哈哈哈</p> <slot></slot> <!-- 子组件这里定义了一个插槽 --> </div> </template> <script src="vue.js"></script> <script> const app = new Vue({ el:'#app', data:{ message:'你好' }, components:{ cpn:{ template:'#cpn' } } }) </script> </body>

    从以下运行结果可以看到插槽中内容在父组件使用的时候被替换了。

    该处使用的url网络请求的数据。


    2.子组件插槽默认值

    某些情况: 如果在父组件使用组件的时候,插槽位置都是button,如果在父组件中写代码不够简洁,这时我们可以直接在子组件插槽中定义默认值。 如果在父组件中使用的时候,没有写入自定义插槽的内容,就会显示子组件默认的插槽内容;如果写入自定义插槽的内容,就会覆盖子组件默认插槽的内容,如果父组件中写入多个元素,默认值将被替换为自定义的多个元素。

    代码如下:

    <body> <div id="app"> <!-- 在父组件中使用插槽 --> <cpn><span>一个元素会被替换</span></cpn> <!--这里会覆盖子组件中插槽默认内容--> <cpn> <span>多个元素也会被替换</span> <i>呵呵呵</i> <div>我是div元素</div> <p>我是p元素</p> </cpn> <cpn></cpn> <!--显示默认--> <cpn></cpn> </div> <template id="cpn"> <div> <h2>我是组件</h2> <p>我是组件,哈哈哈哈</p> <slot><button>按钮</button></slot> <!-- 子组件这里定义了一个插槽,默认内容是一个按钮--> </div> </template> <script src="vue.js"></script> <script> const app = new Vue({ el:'#app', data:{ message:'你好' }, components:{ cpn:{ template:'#cpn' } } }) </script> </body>

    运行结果:

    Processed: 0.009, SQL: 8