UNPKG

@fruits-chain/react-native-xiaoshu

Version:
52 lines (44 loc) • 1.71 kB
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /* eslint-disable @typescript-eslint/explicit-member-accessibility */ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import React, { Component } from 'react'; import PortalConsumer from './portal-consumer'; import PortalHost, { portal, PortalContext } from './portal-host'; /** * Portal allows to render a component at a different place in the parent tree. * You can use it to render content which should appear above other elements, similar to `Modal`. * It requires a [`Portal.Host`](portal-host.html) component to be rendered somewhere in the parent tree. * * ## Usage * ```js * import * as React from 'react'; * import { Text } from 'react-native'; * import { Portal } from '@fruits-chain/react-native-xiaoshu'; * * export default class MyComponent extends React.Component { * render() { * const { visible } = this.state; * return ( * <Portal> * <Text>This is rendered at a different place</Text> * </Portal> * ); * } * } * ``` */ class Portal extends Component { render() { const { children } = this.props; return /*#__PURE__*/React.createElement(PortalContext.Consumer, null, manager => /*#__PURE__*/React.createElement(PortalConsumer, { manager: manager }, children)); } } _defineProperty(Portal, "Host", PortalHost); _defineProperty(Portal, "add", portal.add); _defineProperty(Portal, "remove", portal.remove); export default Portal; //# sourceMappingURL=portal.js.map