From 0c8d3e37c910d1bf93e3106d0b54b69b605c15c0 Mon Sep 17 00:00:00 2001 From: Georg Wicke-Arndt Date: Wed, 15 Mar 2023 12:34:19 +0100 Subject: [PATCH] Use original instead of immer draft for perf --- packages/toolkit/src/query/core/buildSlice.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/toolkit/src/query/core/buildSlice.ts b/packages/toolkit/src/query/core/buildSlice.ts index 3343b6dc3d..68361cf7f3 100644 --- a/packages/toolkit/src/query/core/buildSlice.ts +++ b/packages/toolkit/src/query/core/buildSlice.ts @@ -31,8 +31,8 @@ import type { EndpointDefinitions, QueryDefinition, } from '../endpointDefinitions' -import type { Patch } from 'immer' -import { applyPatches } from 'immer' +import { isDraft, Patch } from 'immer' +import { applyPatches, original } from 'immer' import { onFocus, onFocusLost, onOffline, onOnline } from './setupListeners' import { isDocumentVisible, @@ -208,7 +208,12 @@ export function buildSlice({ // Assign or safely update the cache data. substate.data = definitions[meta.arg.endpointName].structuralSharing ?? true - ? copyWithStructuralSharing(substate.data, payload) + ? copyWithStructuralSharing( + isDraft(substate.data) + ? original(substate.data) + : substate.data, + payload + ) : payload }