react 高级指引(Fragments,Potals)

187 阅读1分钟

Fragments

Fragments 在解析的时候会被删除掉,所以不会产生多余的标签

导入

import { Fragment } from "react";

使用

class Test extends Component {
  render() {
    return (
      <Fragment>
        <p>1</p>
        <p>2</p>
      </Fragment>
    );
  }
}

export default Test;

Portals

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

创建组件

Potals.js

import React from "react";
import ReactDom from "react-dom";

class Potals extends React.Component {
  render() {
    return ReactDom.createPortal(
      <div>Protals</div>,
      document.getElementById("root-dome")
    );
  }
}

export default Potals;

使用

App.js

import React from "react";
import ReactDOM from "react-dom";

import Potals from "./Potals";

function App() {
  return (
    <div className="App">
      <p>App</p>
    </div>
  );
}

const rootElement = document.getElementById("root");
const potalsElement = document.getElementById("potals");

ReactDOM.render(<App />, rootElement);
ReactDOM.render(<Potals />, potalsElement);