博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React入门0x015: Portal-如果可以更愿意称为`容器`
阅读量:6449 次
发布时间:2019-06-23

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

0x001 Portal

先上栗子再说话:

class PortalComp extends React.Component {    render() {        return (            
{this.props.children}
); }}class App extends React.Component { render() { return
hehe
}}ReactDom.render(
, document.getElementById('app'))

如上的PortalComp就是一个Portal,写在PortalComp中间的组件将被挂载到PortalCompprops.children,所以在PortalComp中可以使用props.children访问。

Portal在英文中为入口的意思,但是我更喜欢称之为容器,这不是音译意译,而是表译。一个Portal组件看过去就像是一个容器啊,可以将子组件包装起来,装啥都行,就像一个垃圾桶。

0x002 实用栗子-通用Dialog

  • 源码

    const DialogContainer={position:'absolute',left:'0',top:'0',width:'100%',height:'100%',backgroundColor:'rgba(0,0,0,0.5)'}const DialogContent={backgroundColor:'#ffffff',marginTop:'200px',width:'200px',marginLeft:'auto',marginRight:'auto',padding:'10px'}class Dialog extends React.Component {    render() {        return (            
    {this.props.children}
    ); }}class App extends React.Component { render() { return

    这是一个dialog

    }}
  • 效果

    clipboard.png

  • 说明:

    这样,我们就写出了一个通用的Dialog模版,只要将里面的内容替换,就能做到不同的Dialog,比如替换成时间选择器,那就是一个DateDialog

    class DateDialog extends React.Component{    render() {        return (            

    请选择时间

    ); }}

    效果如下:

    clipboard.png

    所以使用这种组合的方式将会衍生出无数的组件,弹窗时间选择器、弹窗、Modal......太帅了

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

你可能感兴趣的文章
node.js操作MySQL数据库
查看>>
oracle常用字段类型
查看>>
mapreduce/spark/storm/Tez 框架
查看>>
20个简化开发任务的JavaScript库
查看>>
cocos2dx通过Jni调用Android的Java层代码(上)
查看>>
Junit 小案列 基本注解
查看>>
SpringAop的使用
查看>>
自由源于自信,自信源于自律
查看>>
Linux安装与基础命令
查看>>
quick UIInput 的使用
查看>>
远程管理
查看>>
免费(学习)使用的数据库
查看>>
锁定10月10日,九州云Animbus7.0与你不见不散
查看>>
事务 C#中TransactionScope的使用方法和原理
查看>>
如何在NGINX中重定向一个网址(301 跳转)
查看>>
CentOS 6.4 关闭 selinux
查看>>
Android数据存储方式
查看>>
使用 Fonty Python 管理你的字体
查看>>
VMware Workstation 14 Pro黑屏
查看>>
《Effective Java》2nd 笔记
查看>>