From e0b1db441c20edec7423449ce1f303f6f163747a Mon Sep 17 00:00:00 2001 From: Jacob Ebey Date: Mon, 29 Apr 2024 12:13:37 -0700 Subject: [PATCH] fix: allow undefined to be resolved with `` (#11513) --- .changeset/heavy-lies-ring.md | 5 ++++ .../__tests__/data-memory-router-test.tsx | 29 +++++++++++++++++++ packages/react-router/lib/components.tsx | 4 +-- 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 .changeset/heavy-lies-ring.md diff --git a/.changeset/heavy-lies-ring.md b/.changeset/heavy-lies-ring.md new file mode 100644 index 0000000000..f758c28dc0 --- /dev/null +++ b/.changeset/heavy-lies-ring.md @@ -0,0 +1,5 @@ +--- +"react-router": patch +--- + +allow undefined to be resolved with `` diff --git a/packages/react-router/__tests__/data-memory-router-test.tsx b/packages/react-router/__tests__/data-memory-router-test.tsx index 4a4826dd2c..db9dd488ad 100644 --- a/packages/react-router/__tests__/data-memory-router-test.tsx +++ b/packages/react-router/__tests__/data-memory-router-test.tsx @@ -3089,6 +3089,35 @@ describe("createMemoryRouter", () => { `); }); + it("can render raw resolved to undefined promises with ", async () => { + let dfd = createDeferred(); + + let { container } = render( + Loading...

}> + {(data) =>

{String(data)}

}
+
+ ); + + console.log(getHtml(container)); + expect(getHtml(container)).toMatchInlineSnapshot(` + "
+

+ Loading... +

+
" + `); + + dfd.resolve(undefined); + await waitFor(() => screen.getByText("undefined")); + expect(getHtml(container)).toMatchInlineSnapshot(` + "
+

+ undefined +

+
" + `); + }); + it("can render raw resolved promises with ", async () => { let dfd = createDeferred(); diff --git a/packages/react-router/lib/components.tsx b/packages/react-router/lib/components.tsx index 918bc34d39..958cb5a773 100644 --- a/packages/react-router/lib/components.tsx +++ b/packages/react-router/lib/components.tsx @@ -590,9 +590,9 @@ class AwaitErrorBoundary extends React.Component< // Already tracked promise - check contents promise = resolve; status = - promise._error !== undefined + "_error" in promise ? AwaitRenderStatus.error - : promise._data !== undefined + : "_data" in promise ? AwaitRenderStatus.success : AwaitRenderStatus.pending; } else {