From 88933f015c2e43ad951fb4c17321684937071fee Mon Sep 17 00:00:00 2001 From: bowlingx Date: Thu, 5 Dec 2019 02:52:39 -0600 Subject: [PATCH] fix(build, memoization): fixed ts docs build, added memoization-one for initial state --- package.json | 3 ++- src/lib/store.ts | 12 +++++++++--- yarn.lock | 5 +++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 5f97710..ffd34f2 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,8 @@ "node": ">=8.9" }, "dependencies": { - "query-string": "^6.9.0" + "query-string": "^6.9.0", + "memoize-one": "^5.1.1" }, "peerDependencies": { "history": "^4", diff --git a/src/lib/store.ts b/src/lib/store.ts index ff4ea73..e070e04 100644 --- a/src/lib/store.ts +++ b/src/lib/store.ts @@ -1,6 +1,7 @@ /* tslint:disable:no-expression-statement readonly-array no-shadowed-variable */ import { History } from 'history' import LocationState = History.LocationState +import memoizeOne from 'memoize-one' import { stringify } from 'query-string' import { createContext, useContext, useEffect, useMemo, useState } from 'react' @@ -58,6 +59,11 @@ export const factoryParameters = ( ns: string = DEFAULT_NAMESPACE ) => { const flatConfig = flattenConfig(config) + const memoizedApplyFlatConfigToState = memoizeOne( + applyFlatConfigToState, + ([, nextInitialQueries, nextNs], [, previousInitialQueries, previousNs]) => + nextNs === previousNs && nextInitialQueries === previousInitialQueries + ) const useQuery = () => { const [useStore, api] = useContext(StoreContext) as [ UseStore>, @@ -91,8 +97,8 @@ export const factoryParameters = ( ) const initialRegisterState = useMemo(() => { - const { values, query, initialValues } = - api.getState().namespaces[ns] || {} + const namespaceData = api.getState().namespaces[ns] || {} + const { values, query, initialValues } = namespaceData if (values) { return { initialValues, @@ -103,7 +109,7 @@ export const factoryParameters = ( // thisValues will be mutated by applyFlatConfigToState, that's why we init it with a copy of // the initial state. const thisValues = { ...defaultInitialValues } - const thisQuery = applyFlatConfigToState( + const thisQuery = memoizedApplyFlatConfigToState( flatConfig, initialQueries, ns, diff --git a/yarn.lock b/yarn.lock index aaf3e82..56a5335 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9024,6 +9024,11 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memoize-one@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a"