Skip to content

Commit 119c751

Browse files
committed
Add test from #32316
1 parent 7c4b73f commit 119c751

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2624,4 +2624,41 @@ describe('ReactFlightDOMBrowser', () => {
26242624
expect(responseFoo.bar).toBe(responseBar);
26252625
expect(Array.from(responseBar)[0]).toBe(responseFoo);
26262626
});
2627+
2628+
it('should resolve deduped references in maps used in client component props', async () => {
2629+
const ClientComponent = clientExports(function ClientComponent({
2630+
shared,
2631+
map,
2632+
}) {
2633+
expect(map.get(42)).toBe(shared);
2634+
return JSON.stringify({shared, map: Array.from(map)});
2635+
});
2636+
2637+
function Server() {
2638+
const shared = {id: 42};
2639+
const map = new Map([[42, shared]]);
2640+
2641+
return <ClientComponent shared={shared} map={map} />;
2642+
}
2643+
2644+
const stream = await serverAct(() =>
2645+
ReactServerDOMServer.renderToReadableStream(<Server />, webpackMap),
2646+
);
2647+
2648+
function ClientRoot({response}) {
2649+
return use(response);
2650+
}
2651+
2652+
const response = ReactServerDOMClient.createFromReadableStream(stream);
2653+
const container = document.createElement('div');
2654+
const root = ReactDOMClient.createRoot(container);
2655+
2656+
await act(() => {
2657+
root.render(<ClientRoot response={response} />);
2658+
});
2659+
2660+
expect(container.innerHTML).toBe(
2661+
'{"shared":{"id":42},"map":[[42,{"id":42}]]}',
2662+
);
2663+
});
26272664
});

0 commit comments

Comments
 (0)