博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue插槽
阅读量:6432 次
发布时间:2019-06-23

本文共 2350 字,大约阅读时间需要 7 分钟。

插槽内容

Vue实现一套内容分发的API, 这套API基于当前的web组件规范草案,将<slot>元素作为承载分发内容的出口。

Your Profile

然后在<navigation-link>的模板中可能会写为:

    

当组件渲染的时候,这个<slot>元素将会被"Yourt Profile"替换。插槽可以包括任何模板代码,包括HTML:

Your Profile

甚至其他的组件:

Your Profile

如果<navigation-link>没有包含一个<slot>元素,则任何传入它的内容都会被抛弃。

具名插槽

有些时候我们需要多个插槽,例如:

我们希望把页头放这里
我们希望把主要内容放这里
我们希望把页脚放这里

对于这种情况,<slot>元素有一个特殊的特性:name。这个特性可以用来定义额外的插槽:

在向具名插槽提供内容的时候,我们可以在一个父组件的<template>元素上使用slot特性:

A paragraph for the main content

And another one

另一种slot特性的用法是直接用在一个普通元素上:

Here might be a page title

A paragraph for the main content

And another one

Here is some contact info

我们还是可以保留一个未命名插槽,这个插槽是默认插槽,也就是说它会作为所有未匹配到插槽的内容的统一出口,上述两个示例渲染出来的HTML都将会是:

Here might be a page title

A paragraph for the main content.

And another one.

Here's some contact info

插槽的默认内容

有的时候为插槽提供默认内容是很有用的。例如,一个<submit-button>组件可能希望这个按钮的默认内容是"Submit",但是同时允许用户覆盖"Save","Upload"或者别的内容。

你可以在组件模板里的<slot>标签内部指定默认的内容来做到这一点。

如果父组件为这个插槽提供内容,则默认内容会被替换。

编译作用域

当你想在插槽内使用数据时,例如:

Logged in as {
{ user.name }}

该插槽可以访问跟这个模板的其他地方相同的实例属性(也就是说作用域相同)。但这个插槽不能访问<navigation-link>的作用域。例如尝试访问URL是不会工作的。牢记:

>**父组件模板的所有东西都会在父级作用域内编译;子组件的模板的所有东西都会在子级作用域内编译。**

作用域插槽

有时候你希望提供的组件带有一个可从子组件获取数据的可复用的插槽:

  • {
    { todo.text }}

但是在我们应用的某些部分,我们希望每个独立的代办项渲染出和todo.text不太一样的东西。这也是作用域插槽的用武之地。

为了让这个特性成为可能,你需要做的全部事情就是将代办项内容包裹在一个<slot>元素上,然后将所有和其上下文有关的数据传递给这个插槽:在这个例子中,这个数据是todo对象:

  • {
    { todo.text }}

现在当我们使用<todo-list>组件的适合,我们可以选择为代码项定义一个不一样的<template>作为替代方案,并且可以通过slot-scope特性从子组件获取数据:

解构 slot-scope

如果一个JavaScript表达式在一个函数定义的参数位置有效,那么这个表达式实际上就可以被slot-scope接受。也就是说你可以在支持的环境下,在这些表达式中使用ES2015解构语法。

转载地址:http://krxga.baihongyu.com/

你可能感兴趣的文章
python常用内建模块(五)
查看>>
你为什么有那么多时间写博客?
查看>>
Excel 中使用VBA
查看>>
$.ajax同步请求会阻塞js进程
查看>>
Postman 网络调试工具
查看>>
Python教程6
查看>>
zabbix实现自动发现功能添加磁盘监控
查看>>
mysql8.0.14 安装
查看>>
1039. 到底买不买(20)
查看>>
android笔试题一
查看>>
【JavaEE企业应用实战学习记录】getConnListener
查看>>
了解轮询、长轮询、长连接、websocket
查看>>
bzoj2427[HAOI2010]软件安装
查看>>
bzoj1593[Usaco2008 Feb]Hotel 旅馆*
查看>>
WPF个人助手更新
查看>>
NLPIR技术助力中文智能数据挖掘
查看>>
python操作redis--------------数据库增删改查
查看>>
Android中仿IOS提示框的实现
查看>>
php初学第一课
查看>>
Windows下与Linux下编写socket程序的区别 《转载》
查看>>