UNPKG

refun

Version:

A collection of React Hook-enabled functions that compose harmoniously with each other. Similar to `recompose`, but:

44 lines (41 loc) 1.5 kB
import { useRef } from 'react'; import { EMPTY_OBJECT } from 'tsfn'; import { shallowEquals } from './utils'; export function pureComponent() { for (var _len = arguments.length, uses = new Array(_len), _key = 0; _key < _len; _key++) { uses[_key] = arguments[_key]; } return function (Component) { return function (props) { var renderResultRef = useRef(null); var prevOutPropsRef = useRef(EMPTY_OBJECT); var outProps = uses.reduce(function (props, use) { return use(props); }, props); if (prevOutPropsRef.current === EMPTY_OBJECT || !shallowEquals(prevOutPropsRef.current, outProps)) { prevOutPropsRef.current = outProps; renderResultRef.current = Component(outProps); } return renderResultRef.current; }; }; } // export function pureComponent(...uses: any[]) { // return (displayComponent: FC<any>) => { // const MemoComponent = memo(Component) // const MemoRefComponent = memo(forwardRef((props: any, ref) => Component({ ...props, ref }))) // const Result = memo((props: any) => { // const outProps = uses.reduce((props, use) => use(props, { displayName }), props) // if (isUndefined(outProps.ref)) { // return ( // <MemoComponent {...outProps} /> // ) // } // return ( // <MemoRefComponent {...outProps}/> // ) // }) // Result.displayName = displayName // return Result // } // } //# sourceMappingURL=pure-component.js.map