From f4f2f4181050415b2327663618ca8bd5105a80d2 Mon Sep 17 00:00:00 2001 From: Luna Ruan Date: Mon, 14 Dec 2020 19:12:27 -0800 Subject: [PATCH] clone json obj in relay flight client host config parser --- .../src/ReactFlightDOMRelayClientHostConfig.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/react-server-dom-relay/src/ReactFlightDOMRelayClientHostConfig.js b/packages/react-server-dom-relay/src/ReactFlightDOMRelayClientHostConfig.js index f816443781700..09dd7df1d5533 100644 --- a/packages/react-server-dom-relay/src/ReactFlightDOMRelayClientHostConfig.js +++ b/packages/react-server-dom-relay/src/ReactFlightDOMRelayClientHostConfig.js @@ -36,18 +36,25 @@ function parseModelRecursively(response: Response, parentObj, value) { } if (typeof value === 'object' && value !== null) { if (Array.isArray(value)) { + const parsedValue = []; for (let i = 0; i < value.length; i++) { - (value: any)[i] = parseModelRecursively(response, value, value[i]); + (parsedValue: any)[i] = parseModelRecursively( + response, + value, + value[i], + ); } - return parseModelTuple(response, value); + return parseModelTuple(response, parsedValue); } else { + const parsedValue = {}; for (const innerKey in value) { - (value: any)[innerKey] = parseModelRecursively( + (parsedValue: any)[innerKey] = parseModelRecursively( response, value, value[innerKey], ); } + return parsedValue; } } return value;