From ab7bca3e8b1654009bcefc788770f4bab7aa8c43 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 11 Mar 2021 19:12:36 +0100 Subject: [PATCH] core-api: memo app and api provider versioned value maps Signed-off-by: Patrik Oldsberg --- .../core-api/src/apis/system/ApiProvider.tsx | 16 +++++++++------- packages/core-api/src/app/AppContext.tsx | 6 +++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/core-api/src/apis/system/ApiProvider.tsx b/packages/core-api/src/apis/system/ApiProvider.tsx index a99b849104..807b2ff7e0 100644 --- a/packages/core-api/src/apis/system/ApiProvider.tsx +++ b/packages/core-api/src/apis/system/ApiProvider.tsx @@ -20,6 +20,7 @@ import React, { ReactNode, PropsWithChildren, Context, + useMemo, } from 'react'; import PropTypes from 'prop-types'; import { ApiRef, ApiHolder, TypesToApiRefs } from './types'; @@ -54,14 +55,15 @@ export const ApiProvider = ({ children, }: PropsWithChildren) => { const parentHolder = useContext(ApiContext)?.atVersion(1); - const holder = parentHolder ? new ApiAggregator(apis, parentHolder) : apis; - - return ( - + const versionedValue = useMemo( + () => + createVersionedValueMap({ + 1: parentHolder ? new ApiAggregator(apis, parentHolder) : apis, + }), + [parentHolder, apis], ); + + return ; }; ApiProvider.propTypes = { diff --git a/packages/core-api/src/app/AppContext.tsx b/packages/core-api/src/app/AppContext.tsx index cfe439fca5..c143aa86bc 100644 --- a/packages/core-api/src/app/AppContext.tsx +++ b/packages/core-api/src/app/AppContext.tsx @@ -19,6 +19,7 @@ import React, { PropsWithChildren, useContext, Context, + useMemo, } from 'react'; import { VersionedValue, @@ -43,7 +44,10 @@ export const AppContextProvider = ({ appContext, children, }: PropsWithChildren) => { - const versionedValue = createVersionedValueMap({ 1: appContext }); + const versionedValue = useMemo( + () => createVersionedValueMap({ 1: appContext }), + [appContext], + ); return ; };