@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
52 lines (44 loc) • 1.71 kB
JavaScript
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