zent
Version:
一套前端设计语言和基于React的实现
30 lines (24 loc) • 747 B
JavaScript
import React, { Component, PureComponent } from 'react';
import omit from 'lodash/omit';
import { PopoverContextType } from './Popover';
/**
* A high order component to expose imperative APIs for popover.
*
* Adds a popover prop to component.
*/
export const exposePopover = propName => Base => {
return class ExposePopover extends (PureComponent || Component) {
static contextTypes = PopoverContextType;
render() {
const { _zentPopover: popover } = this.context || {};
const context = {
[propName]: omit(popover, [
'registerDescendant',
'unregisterDescendant'
])
};
return <Base {...this.props} {...context} />;
}
};
};
export default exposePopover('popover');