组件(二)

提供/注入(组件链传值)

当我们需要将数据从父组件传递到子组件时,可以使用props实现。

但有时有些子组件是深嵌套的,如果将props传递到整个组件链中,将很麻烦,更不可取。

对于这种情况,可以使用provide和inject实现组件链传值。父组件可以作为其所有子组件的依赖项提供程序,而不管组件层次结构有多深,父组件有一个provide选项来提供数据,子组件有一个inject项来使用这个数据。

单插槽slot

在子组件模板中,可以使用单插槽slot设置默认渲染内容。

<template id="child">    

        <slot>        

                <p>插槽内容,默认内容!</p>    

        </slot>

</template>

多个具名插槽

使用多个具名插槽可以实现混合渲染父组件的内容与子组件的模板。

作用域插槽

有时让插槽能够访问组件中的数据是很有用的。

作用域插槽更具代表性的用例是列表组件。

 <li v-for="post in posts">            

        <!--要使post可为父组件blog-post(slot为子组件)提供的slot内容,可以添加一个<slot>元素并将post绑定为属性-->            

        <slot :postgo="post"></slot>    

</li>

动态组件

在不同组件之间进行动态切换是常见的场景,比如在一个多标签的页面里进行内容的收纳和展现。Vue可通过<component>元素动态挂载不同的组件,进行组件切换。

<component :is="currentView"></component>

异步组件 

在大型应用中,我们可能需要将应用分割成许多小的代码块,并且只在需要时才从服务器异步加载一个模块。

这样可以避免一开始就把所有组件加载,浪费非必要的开销。

Vue有一个 defineAsyncComponent方法将组件定义为一个工厂函数,动态地解析组件。

Vue只在组件需要渲染时触发工厂函数,并把结果缓存起来,以备再次渲染。

使用ref获取DOM元素和组件引用

有时需要直接引用组件或DOM元素。为此,可以使用ref为子组件或HTML元素指定引用ID。

引用HTML元素的示例代码如下:

<input ref="input" />

 引用组件的示例代码如下:

<input ref="usernameInput" />

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值