Skip to content

Commit 8e99b4a

Browse files
committed
Update readme
1 parent 62d3da7 commit 8e99b4a

File tree

1 file changed

+48
-27
lines changed

1 file changed

+48
-27
lines changed

readme.md

+48-27
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ $ yarn add hitchcock
3737

3838
### Director
3939

40-
Import the `Director` component, and add it somewhere in your app:
40+
Import the `Director` component and add it somewhere in your app:
4141

4242
```jsx
4343
import { Director } from "hitchcock";
@@ -53,7 +53,7 @@ function YourApp() {
5353

5454
### Lazy
5555

56-
Instead of using 'React.lazy' import 'lazy' from hitchcock:
56+
Instead of using `React.lazy` import `lazy` from hitchcock:
5757

5858
```jsx
5959
import { lazy } from "hitchcock";
@@ -70,14 +70,22 @@ const ArtistPage = lazy(() => import("./components/ArtistPage"), "ArtistPage");
7070
```jsx
7171
import { createResource } from "hitchcock";
7272

73-
const ComicResource = createResource(
74-
id => fetch(`https://xkcd.com/${id}/info.0.json`).then(r => r.json()),
75-
id => `comic-${id}`
73+
const BeerResource = createResource(
74+
id =>
75+
fetch(`https://api.punkapi.com/v2/beers/${id}`)
76+
.then(r => r.json())
77+
.then(d => d[0]),
78+
id => `beer-${id}`
7679
);
7780

78-
function Comic({ comicId }) {
79-
const comic = ComicResource.read(comicId);
80-
return <h1>{comic.title}</h1>;
81+
function Beer({ beerId }) {
82+
const beer = BeerResource.read(beerId);
83+
return (
84+
<>
85+
<h1>{beer.name}</h1>
86+
<p>{beer.description}</p>
87+
</>
88+
);
8189
}
8290
```
8391

@@ -91,38 +99,51 @@ It returns a `resource` with a `read` method that will suspend a component until
9199

92100
```jsx
93101
import React, { Suspense } from "react";
94-
import { createResource } from "hitchcock";
95-
96-
const ComicResource = createResource(
97-
id => fetch(`https://xkcd.com/${id}/info.0.json`).then(r => r.json()),
98-
id => `comic-${id}`
102+
import ReactDOM from "react-dom";
103+
import { createResource, Director } from "hitchcock";
104+
105+
const BeerResource = createResource(
106+
id =>
107+
fetch(`https://api.punkapi.com/v2/beers/${id}`)
108+
.then(r => r.json())
109+
.then(d => d[0]),
110+
id => `beer-${id}`
99111
);
100112

101113
function App() {
102-
const [comicId, setComicId] = React.useState(null);
103-
const deferredComicId = React.useDeferredValue(comicId, { timeoutMs: 2000 });
104-
const showComic = deferredComicId !== null && comicId === deferredComicId;
114+
const [beerId, setBeerId] = React.useState(0);
115+
const deferredBeerId = React.useDeferredValue(beerId, { timeoutMs: 1000 });
116+
117+
const showBeer = deferredBeerId > 0;
105118

106119
const handleChange = e => {
107-
const newComicId = +e.target.value;
108-
ComicResource.preload(newComicId);
109-
setComicId(newComicId);
120+
const newBeerId = +e.target.value;
121+
BeerResource.preload(newBeerId);
122+
setBeerId(newBeerId);
110123
};
111124

112125
return (
113-
<div>
114-
Comic: <input type="number" value={comicId} onChange={handleChange} />
115-
<Suspense falback={`Loading comic ${comicId}...`}>
116-
{showComic && <Comic comicId={deferredComicId} />}
126+
<Director>
127+
Beer # <input type="number" value={beerId} onChange={handleChange} />
128+
<Suspense fallback={<div>{`Loading beer #${beerId}...`}</div>}>
129+
{showBeer && <Beer beerId={deferredBeerId} />}
117130
</Suspense>
118-
</div>
131+
</Director>
119132
);
120133
}
121134

122-
function Comic({ comicId }) {
123-
const comic = ComicResource.read(comicId);
124-
return <h1>{comic.title}</h1>;
135+
function Beer({ beerId }) {
136+
const beer = BeerResource.read(beerId);
137+
return (
138+
<>
139+
<h1>{beer.name}</h1>
140+
<p>{beer.description}</p>
141+
</>
142+
);
125143
}
144+
145+
const container = document.getElementById("root");
146+
ReactDOM.createRoot(container).render(<App />);
126147
```
127148

128149
## Contributing

0 commit comments

Comments
 (0)