119
120
let {writable, readable} = getTestStream();
121
ReactFlightDOMServer.pipeToNodeWritable(<App />, writable, webpackMap);
122
- let result = ReactFlightDOMClient.readFromReadableStream(readable);
122
+ let response = ReactFlightDOMClient.createFromReadableStream(readable);
123
await waitForSuspense(() => {
124
- expect(result.model).toEqual({
124
+ let model = response.readRoot();
125
+ expect(model).toEqual({
126
html: (
127
<div>
128
<span>hello</span>
155
}
156
157
// View
157
- function Message({result}) {
158
- return <section>{result.model.html}</section>;
158
+ function Message({response}) {
159
+ return <section>{response.readRoot().html}</section>;
160
}
160
- function App({result}) {
161
+ function App({response}) {
162
return (
163
<Suspense fallback={<h1>Loading...</h1>}>
163
- <Message result={result} />
164
+ <Message response={response} />
165
</Suspense>
166
);
167
}
172
writable,
173
webpackMap,
174
);
174
- let result = ReactFlightDOMClient.readFromReadableStream(readable);
175
+ let response = ReactFlightDOMClient.createFromReadableStream(readable);
176
177
let container = document.createElement('div');
178
let root = ReactDOM.createRoot(container);
179
await act(async () => {
179
- root.render(<App result={result} />);
180
+ root.render(<App response={response} />);
181
});
182
expect(container.innerHTML).toBe(
183
'<section><div><span>hello</span><span>world</span></div></section>',
193
}
194
195
// View
195
- function Message({result}) {
196
- return <p>{result.model.text}</p>;
196
+ function Message({response}) {
197
+ return <p>{response.readRoot().text}</p>;
198
}
198
- function App({result}) {
199
+ function App({response}) {
200
return (
201
<Suspense fallback={<h1>Loading...</h1>}>
201
- <Message result={result} />
202
+ <Message response={response} />
203
</Suspense>
204
);
205
}
210
writable,
211
webpackMap,
212
);
212
- let result = ReactFlightDOMClient.readFromReadableStream(readable);
213
+ let response = ReactFlightDOMClient.createFromReadableStream(readable);
214
215
let container = document.createElement('div');
216
let root = ReactDOM.createRoot(container);
217
await act(async () => {
217
- root.render(<App result={result} />);
218
+ root.render(<App response={response} />);
219
});
220
expect(container.innerHTML).toBe('<p>$1</p>');
221
});
229
}
230
231
// View
231
- function Message({result}) {
232
- return <p>{result.model.text}</p>;
232
+ function Message({response}) {
233
+ return <p>{response.readRoot().text}</p>;
234
}
234
- function App({result}) {
235
+ function App({response}) {
236
return (
237
<Suspense fallback={<h1>Loading...</h1>}>
237
- <Message result={result} />
238
+ <Message response={response} />
239
</Suspense>
240
);
241
}
246
writable,
247
webpackMap,
248
);
248
- let result = ReactFlightDOMClient.readFromReadableStream(readable);
249
+ let response = ReactFlightDOMClient.createFromReadableStream(readable);
250
251
let container = document.createElement('div');
252
let root = ReactDOM.createRoot(container);
253
await act(async () => {
253
- root.render(<App result={result} />);
254
+ root.render(<App response={response} />);
255
});
256
expect(container.innerHTML).toBe('<p>@div</p>');
257
});
328
};
329
330
// View
330
- function ProfileDetails({result}) {
331
+ function ProfileDetails({response}) {
332
+ let model = response.readRoot();
333
return (
334
<div>
333
- {result.model.name}
334
- {result.model.more.avatar}
335
+ {model.name}
336
+ {model.more.avatar}
337
</div>
338
);
339
}
338
- function ProfileSidebar({result}) {
340
+ function ProfileSidebar({response}) {
341
+ let model = response.readRoot();
342
return (
343
<div>
341
- {result.model.photos}
342
- {result.model.more.friends}
344
+ {model.photos}
345
+ {model.more.friends}
346
</div>
347
);
348
}
346
- function ProfilePosts({result}) {
347
- return <div>{result.model.more.posts}</div>;
349
+ function ProfilePosts({response}) {
350
+ return <div>{response.readRoot().more.posts}</div>;
351
}
349
- function ProfileGames({result}) {
350
- return <div>{result.model.more.games}</div>;
352
+ function ProfileGames({response}) {
353
+ return <div>{response.readRoot().more.games}</div>;
354
}
352
- function ProfilePage({result}) {
355
+ function ProfilePage({response}) {
356
return (
357
<>
358
<Suspense fallback={<p>(loading)</p>}>
356
- <ProfileDetails result={result} />
359
+ <ProfileDetails response={response} />
360
<Suspense fallback={<p>(loading sidebar)</p>}>
358
- <ProfileSidebar result={result} />
361
+ <ProfileSidebar response={response} />
362
</Suspense>
363
<Suspense fallback={<p>(loading posts)</p>}>
361
- <ProfilePosts result={result} />
364
+ <ProfilePosts response={response} />
365
</Suspense>
366
<ErrorBoundary fallback={e => <p>{e.message}</p>}>
367
<Suspense fallback={<p>(loading games)</p>}>
365
- <ProfileGames result={result} />
368
+ <ProfileGames response={response} />
369
</Suspense>
370
</ErrorBoundary>
371
</Suspense>
375
376
let {writable, readable} = getTestStream();
377
ReactFlightDOMServer.pipeToNodeWritable(profileModel, writable, webpackMap);
375
- let result = ReactFlightDOMClient.readFromReadableStream(readable);
378
+ let response = ReactFlightDOMClient.createFromReadableStream(readable);
379
380
let container = document.createElement('div');
381
let root = ReactDOM.createRoot(container);
382
await act(async () => {
380
- root.render(<ProfilePage result={result} />);
383
+ root.render(<ProfilePage response={response} />);
384
});
385
expect(container.innerHTML).toBe('<p>(loading)</p>');
386