美文网首页
[react]15、Portals、Fragment、Stric

[react]15、Portals、Fragment、Stric

作者: 史记_d5da | 来源:发表于2021-11-11 22:26 被阅读0次

1、Portals

Portal 提供了一种将子节点渲染到存在于父组件以外的 DOM 节点的优秀的方案
ReactDOM.createPortal(child, container )

  • 第一个参数(child)是任何可渲染的 React 子元素,例如一个元素,字符串或 fragment
  • 第二个参数(container)是一个 DOM 元素
import React, { PureComponent } from 'react'
import ReactDOM from 'react-dom'
class Modal extends PureComponent {
    render() {
        return ReactDOM.createPortal(
            this.props.children,
            document.getElementById("modal")
        )
    }
}

class Home extends PureComponent {
    render () {
        return (
            <div>
                <h2>Home</h2>
                <Modal> <h2>Title</h2> </Modal>
            </div>
        )
    }
}
export default class App extends PureComponent {
    render() {
        return (
            <div> <Home /> </div>
        )
    }
}

2、Fragment

React 中的一个常见模式是一个组件返回多个元素。Fragments 允许你将子列表分组,而无需向 DOM 添加额外节点
1、用法

class Columns extends React.Component {
  render() {
    return (
      <React.Fragment>
        <td>Hello</td>
        <td>World</td>
      </React.Fragment>
    );
  }
}

2、短语法

class Columns extends React.Component {
  render() {
    return (
      <>
        <td>Hello</td>
        <td>World</td>
      </>
    );
  }
}

3、带 key 的 Fragments

function Glossary(props) {
  return (
    <dl>
      {props.items.map(item => (
        // 没有`key`,React 会发出一个关键警告
        <React.Fragment key={item.id}>
          <dt>{item.term}</dt>
          <dd>{item.description}</dd>
        </React.Fragment>
      ))}
    </dl>
  );
}

3、StrictMode

StrictMode 是一个用来突出显示应用程序中潜在问题的工具。与 Fragment 一样,StrictMode 不会渲染任何可见的 UI。它为其后代元素触发额外的检查和警告。
检查的内容:

import React, { PureComponent, StrictMode } from 'react'
class Home extends PureComponent {
    constructor(props) {
        super(props)
        console.log("constructor Home")
    }
    UNSAFE_componentWillMount() {
        console.log("Home -- componentWillMount")
    }
    render() {
        return (
            <div>Home</div>
        )
    }
}
export default class App extends PureComponent {
    render() {
        return (
            <div>
                <StrictMode>
                    <Home />
                </StrictMode>
            </div>
        )
    }
}

相关文章

  • [react]15、Portals、Fragment、Stric

    1、Portals Portal 提供了一种将子节点渲染到存在于父组件以外的 DOM 节点的优秀的方案ReactD...

  • React Portals

    Protals用法: ReactDOM.createPortal(child, container) 看了官方文档...

  • Portals

    Portals React 16的Portals特性让我们可以把组件渲染到当前组件树以外的 DOM节点上,这个特性...

  • Fragment

    import React ,{Component,Fragment} from 'react';Fragment可...

  • React弹出层组件一

    react正常无法在父组件dom节点之外的其他节点创建组件,查文档发现react提供了Portals方法来实现: ...

  • Rn嵌套Fragment键盘弹出处理

    react-native 嵌套原生Fragment,Fragment底部输入框键盘弹出中间的react-nativ...

  • React源码笔记

    1.React.Fragment可以简写为<>,babel会自动按React.Fragment处理2.Rea...

  • react-插槽(Portals)

    插槽(Portals)能将子节点渲染到父组件的 DOM 层次之外 1:用法 ReactDOM.createPort...

  • React进阶笔记11(Portals)

    Portals提供了一种能让子节点渲染到父组件之外的方式。 第一个参数(child)是任何可渲染的 React 子...

  • 九. React的插槽(Portals)

    Portals 提供了一种很好的方法,将子节点渲染到父组件 DOM 层次结构之外的 DOM 节点。 第一个参数(c...

网友评论

      本文标题:[react]15、Portals、Fragment、Stric

      本文链接:https://www.haomeiwen.com/subject/qnsyzltx.html