From 50da321568164eed4b3854b8bde928b0c21d33dd Mon Sep 17 00:00:00 2001 From: Jarda Snajdr Date: Fri, 16 Dec 2022 10:35:53 +0100 Subject: [PATCH] Data: recreate listeningStores set for every markListeningStores call --- packages/data/src/registry.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/data/src/registry.js b/packages/data/src/registry.js index 89286f689294a5..df46227257f363 100644 --- a/packages/data/src/registry.js +++ b/packages/data/src/registry.js @@ -60,7 +60,7 @@ function getStoreName( storeNameOrDescriptor ) { export function createRegistry( storeConfigs = {}, parent = null ) { const stores = {}; const emitter = createEmitter(); - const listeningStores = new Set(); + let listeningStores = null; /** * Global listener called for each store's update. @@ -112,7 +112,7 @@ export function createRegistry( storeConfigs = {}, parent = null ) { */ function select( storeNameOrDescriptor ) { const storeName = getStoreName( storeNameOrDescriptor ); - listeningStores.add( storeName ); + listeningStores?.add( storeName ); const store = stores[ storeName ]; if ( store ) { return store.getSelectors(); @@ -122,11 +122,12 @@ export function createRegistry( storeConfigs = {}, parent = null ) { } function __unstableMarkListeningStores( callback, ref ) { - listeningStores.clear(); + listeningStores = new Set(); try { return callback.call( this ); } finally { ref.current = Array.from( listeningStores ); + listeningStores = null; } } @@ -143,7 +144,7 @@ export function createRegistry( storeConfigs = {}, parent = null ) { */ function resolveSelect( storeNameOrDescriptor ) { const storeName = getStoreName( storeNameOrDescriptor ); - listeningStores.add( storeName ); + listeningStores?.add( storeName ); const store = stores[ storeName ]; if ( store ) { return store.getResolveSelectors(); @@ -165,7 +166,7 @@ export function createRegistry( storeConfigs = {}, parent = null ) { */ function suspendSelect( storeNameOrDescriptor ) { const storeName = getStoreName( storeNameOrDescriptor ); - listeningStores.add( storeName ); + listeningStores?.add( storeName ); const store = stores[ storeName ]; if ( store ) { return store.getSuspendSelectors();