@@ -250,6 +250,8 @@ As it stands, there’s no user feedback when you click the “Load More” butt
250
250
To do that, we need can use the ` isLoadingNext ` boolean value returned from ` usePaginationFragment ` . Here are the changes we need to make:
251
251
252
252
```
253
+ import SmallSpinner from "./SmallSpinner";
254
+
253
255
function StoryCommentsSection({story}) {
254
256
// change-line
255
257
const {data, loadNext, isLoadingNext} = usePaginationFragment(StoryCommentsSectionFragment, story);
@@ -332,8 +334,11 @@ function Newsfeed() {
332
334
const storyEdges = data.viewer.newsfeedStories.edges;
333
335
return (
334
336
<>
337
+ // change-line
335
338
{storyEdges.map(storyEdge =>
339
+ // change-line
336
340
<Story key={storyEdge.node.id} story={storyEdge.node} />
341
+ // change-line
337
342
)}
338
343
</>
339
344
);
@@ -349,22 +354,36 @@ To get this to work, we just need to separate out the contents `NewsfeedQuery` i
349
354
```
350
355
const NewsfeedQuery = graphql`
351
356
query NewsfeedQuery {
357
+ // change-line
352
358
...NewsfeedContentsFragment
353
359
}
354
360
`;
355
361
362
+ // change-line
356
363
const NewsfeedContentsFragment = graphql`
364
+ // change-line
357
365
fragment NewsfeedContentsFragment on Query {
366
+ // change-line
358
367
viewer {
368
+ // change-line
359
369
newsfeedStories {
370
+ // change-line
360
371
edges {
372
+ // change-line
361
373
node {
374
+ // change-line
362
375
id
376
+ // change-line
363
377
...StoryFragment
378
+ // change-line
364
379
}
380
+ // change-line
365
381
}
382
+ // change-line
366
383
}
384
+ // change-line
367
385
}
386
+ // change-line
368
387
}
369
388
`;
370
389
```
@@ -398,14 +417,21 @@ You should end up with something like this:
398
417
```
399
418
const NewsfeedContentsFragment = graphql`
400
419
fragment NewsfeedContentsFragment on Query
420
+ // change-line
401
421
@argumentDefinitions (
422
+ // change-line
402
423
cursor: { type: "String" }
424
+ // change-line
403
425
count: { type: "Int", defaultValue: 3 }
426
+ // change-line
404
427
)
428
+ // change-line
405
429
@refetchable(queryName: "NewsfeedContentsRefetchQuery")
406
430
{
407
431
viewer {
432
+ // change-line
408
433
newsfeedStories(after: $cursor, first: $count)
434
+ // change-line
409
435
@connection(key: "NewsfeedContentsFragment_newsfeedStories")
410
436
{
411
437
edges {
@@ -425,13 +451,22 @@ const NewsfeedContentsFragment = graphql`
425
451
Now we need to modify the ` Newsfeed ` component to call ` usePaginationFragment: `
426
452
427
453
```
454
+ import type { NewsfeedContentsRefetchQuery as NewsfeedContentsRefetchQueryType } from "./__generated__/NewsfeedContentsRefetchQuery.graphql";
455
+ import { NewsfeedContentsFragment$key } from "./__generated__/NewsfeedContentsFragment.graphql";
456
+
428
457
function Newsfeed() {
429
458
const queryData = useLazyLoadQuery<NewsfeedQueryType>(
430
459
NewsfeedQuery,
431
460
{},
432
461
);
433
462
// change-line
434
- const {data, loadNext} = usePaginationFragment(NewsfeedContentsFragment, queryData);
463
+ const {data, loadNext} = usePaginationFragment<
464
+ // change-line
465
+ NewsfeedContentsRefetchQueryType,
466
+ // change-line
467
+ NewsfeedContentsFragment$key
468
+ // change-line
469
+ >(NewsfeedContentsFragment, queryData);
435
470
const storyEdges = data.viewer.newsfeedStories.edges;
436
471
return (
437
472
<div className="newsfeed">
@@ -462,7 +497,10 @@ function Newsfeed() {
462
497
hasNext,
463
498
// change-line
464
499
isLoadingNext,
465
- } = usePaginationFragment(NewsfeedContentsFragment, queryData);
500
+ } = usePaginationFragment<
501
+ NewsfeedContentsRefetchQueryType,
502
+ NewsfeedContentsFragment$key
503
+ >(NewsfeedContentsFragment, queryData);
466
504
// change
467
505
function onEndReached() {
468
506
loadNext(1);
0 commit comments