From 0a03ea3a7521d62e34c6df9dba33e0aacb35bf41 Mon Sep 17 00:00:00 2001 From: tannerlinsley Date: Mon, 9 Sep 2019 08:24:08 -0600 Subject: [PATCH] fix: better flexRender utility (supports JSX elements now) --- examples/kitchen-sink/src/App.js | 2 +- src/utils.js | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/examples/kitchen-sink/src/App.js b/examples/kitchen-sink/src/App.js index 44fddd9..fba3bf0 100644 --- a/examples/kitchen-sink/src/App.js +++ b/examples/kitchen-sink/src/App.js @@ -304,8 +304,8 @@ function Table({ columns, data, updateMyData, disablePageResetOnDataChange }) { disablePageResetOnDataChange, }, useFilters, - useSortBy, useGroupBy, + useSortBy, useExpanded, usePagination, useRowSelect diff --git a/src/utils.js b/src/utils.js index 5d481b1..f64d49e 100755 --- a/src/utils.js +++ b/src/utils.js @@ -265,10 +265,22 @@ export function getElementDimensions(element) { } export function flexRender(Comp, props) { - if (typeof Comp === 'function' || typeof Comp === 'object') { - return - } - return Comp + return isReactComponent(Comp) ? : Comp +} + +function isClassComponent(component) { + return ( + typeof component === 'function' && + !!Object.getPrototypeOf(component).isReactComponent + ) +} + +function isFunctionComponent(component) { + return typeof component === 'function' +} + +function isReactComponent(component) { + return isClassComponent(component) || isFunctionComponent(component) } export const mergeProps = (...groups) => {