From 8d14827087964a03fc610099cdd8af9553713d06 Mon Sep 17 00:00:00 2001 From: Anton Korzunov Date: Thu, 4 Jul 2019 18:56:32 +1000 Subject: [PATCH] chore: cleanup resolver --- src/reactHotLoader.js | 4 ++-- src/reconciler/componentComparator.js | 19 +++++++++++++++++-- src/reconciler/resolver.js | 4 +++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/reactHotLoader.js b/src/reactHotLoader.js index cbce2dd68..a1ef1e94a 100644 --- a/src/reactHotLoader.js +++ b/src/reactHotLoader.js @@ -128,12 +128,12 @@ const reactHotLoader = { configuration.showReactDomPatchNotification = false; if (ReactDOM.setHotTypeResolver) { - configuration.intergratedResolver = true; + configuration.integratedResolver = true; ReactDOM.setHotTypeResolver(resolveType); } } - if (!configuration.intergratedResolver) { + if (!configuration.integratedResolver) { /* eslint-enable */ if (!React.createElement.isPatchedByReactHotLoader) { const originalCreateElement = React.createElement; diff --git a/src/reconciler/componentComparator.js b/src/reconciler/componentComparator.js index 91606ce8b..c3eda16ae 100644 --- a/src/reconciler/componentComparator.js +++ b/src/reconciler/componentComparator.js @@ -1,6 +1,13 @@ import { getIdByType, getProxyByType, getSignature, isColdType, updateProxyById } from './proxies'; import { hotComparisonOpen } from '../global/generation'; -import { isForwardType, isMemoType, isReactClass, isReloadableComponent } from '../internal/reactUtils'; +import { + isContextType, + isForwardType, + isLazyType, + isMemoType, + isReactClass, + isReloadableComponent, +} from '../internal/reactUtils'; import { areSwappable } from './utils'; import { PROXY_KEY, UNWRAP_PROXY } from '../proxy'; import { resolveType } from './resolver'; @@ -140,6 +147,14 @@ const compareComponents = (oldType, newType, setNewType, baseType) => { return defaultResult; } + if (isLazyType({ type: oldType })) { + return defaultResult; + } + + if (isContextType({ type: oldType })) { + return defaultResult; + } + if ( typeof newType === 'function' && (defaultResult || @@ -164,7 +179,7 @@ const emptyMap = new WeakMap(); export const hotComponentCompare = (oldType, preNewType, setNewType, baseType) => { const hotActive = hotComparisonOpen(); - const newType = configuration.intergratedResolver ? resolveType(preNewType) : preNewType; + const newType = configuration.integratedResolver ? resolveType(preNewType) : preNewType; let result = oldType === newType; if (!hotActive) { diff --git a/src/reconciler/resolver.js b/src/reconciler/resolver.js index 5df2ccc91..fed4a60fa 100644 --- a/src/reconciler/resolver.js +++ b/src/reconciler/resolver.js @@ -2,6 +2,7 @@ import { createProxyForType, getProxyByType, isProxyType, isTypeBlacklisted } fr import { getComponentDisplayName, isCompositeComponent, + isContextType, isForwardType, isLazyType, isMemoType, @@ -11,7 +12,8 @@ import configuration, { internalConfiguration } from '../configuration'; const shouldNotPatchComponent = type => isTypeBlacklisted(type); export function resolveType(type, options = {}) { - if (isLazyType({ type }) || isMemoType({ type }) || isForwardType({ type })) { + const element = { type }; + if (isLazyType(element) || isMemoType(element) || isForwardType(element) || isContextType(element)) { return getProxyByType(type) || type; }