From 933502ce276dc1fca6cfdb92d2b645b77a94e4d3 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 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/toolkit/src/query/core/buildSlice.ts b/packages/toolkit/src/query/core/buildSlice.ts index 3343b6dc3d..6abad48641 100644 --- a/packages/toolkit/src/query/core/buildSlice.ts +++ b/packages/toolkit/src/query/core/buildSlice.ts @@ -32,7 +32,8 @@ import type { QueryDefinition, } from '../endpointDefinitions' import type { Patch } from 'immer' -import { applyPatches } from 'immer' +import { isDraft } from 'immer' +import { applyPatches, original } from 'immer' import { onFocus, onFocusLost, onOffline, onOnline } from './setupListeners' import { isDocumentVisible, @@ -208,7 +209,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 }