diff --git a/exercise-10/README.md b/exercise-10/README.md index ef81831..8749f3b 100644 --- a/exercise-10/README.md +++ b/exercise-10/README.md @@ -166,3 +166,5 @@ You can verify this by making a change in `data/db.json`, and making sure the ch ### Extra Credit - Read more about [the `useEffect` hook](https://overreacted.io/a-complete-guide-to-useeffect/). + +- Read (a lot!) about [loading data with `useEffect`](https://www.robinwieruch.de/react-hooks-fetch-data/). diff --git a/exercise-10/SOLUTIONS.md b/exercise-10/SOLUTIONS.md index 224d8cd..0559650 100644 --- a/exercise-10/SOLUTIONS.md +++ b/exercise-10/SOLUTIONS.md @@ -53,9 +53,12 @@ export default function FriendsEntry() { export default function FriendsEntry() { const [friends, setFriends] = useState([]); - useEffect(async () => { - const friends = await getFriendsFromApi(); - setFriends(friends); + useEffect(() => { + async function load() { + const friends = await getFriendsFromApi(); + setFriends(friends); + } + load(); }, []); return ; @@ -99,10 +102,13 @@ import FriendDetail from './FriendDetail'; export default function(props) { const [friend, setFriend] = useState(undefined); - useEffect(async () => { - const id = props.match.params.id; - const friend = await getFriendFromApi(id); - setFriend(friend); + useEffect(() => { + async function load() { + const id = props.match.params.id; + const friend = await getFriendFromApi(id); + setFriend(friend); + } + load(); }, [props.match.id]); return ; diff --git a/exercise-10/complete/friend-detail/FriendDetail.entry.js b/exercise-10/complete/friend-detail/FriendDetail.entry.js index 3b28893..f105c1f 100644 --- a/exercise-10/complete/friend-detail/FriendDetail.entry.js +++ b/exercise-10/complete/friend-detail/FriendDetail.entry.js @@ -7,10 +7,13 @@ import FriendDetail from './FriendDetail'; export default function(props) { const [friend, setFriend] = useState(undefined); - useEffect(async () => { - const id = props.match.params.id; - const friend = await getFriendFromApi(id); - setFriend(friend); + useEffect(() => { + async function load() { + const id = props.match.params.id; + const friend = await getFriendFromApi(id); + setFriend(friend); + } + load(); }, [props.match.id]); return ; diff --git a/exercise-10/complete/friends/Friends.entry.js b/exercise-10/complete/friends/Friends.entry.js index 4b9e04f..633ab3f 100644 --- a/exercise-10/complete/friends/Friends.entry.js +++ b/exercise-10/complete/friends/Friends.entry.js @@ -7,9 +7,12 @@ import Friends from './Friends'; export default function FriendsEntry() { const [friends, setFriends] = useState([]); - useEffect(async () => { - const friends = await getFriendsFromApi(); - setFriends(friends); + useEffect(() => { + async function load() { + const friends = await getFriendsFromApi(); + setFriends(friends); + } + load(); }, []); return ; diff --git a/exercise-11/complete/friend-detail/FriendDetail.entry.js b/exercise-11/complete/friend-detail/FriendDetail.entry.js index 3b28893..f105c1f 100644 --- a/exercise-11/complete/friend-detail/FriendDetail.entry.js +++ b/exercise-11/complete/friend-detail/FriendDetail.entry.js @@ -7,10 +7,13 @@ import FriendDetail from './FriendDetail'; export default function(props) { const [friend, setFriend] = useState(undefined); - useEffect(async () => { - const id = props.match.params.id; - const friend = await getFriendFromApi(id); - setFriend(friend); + useEffect(() => { + async function load() { + const id = props.match.params.id; + const friend = await getFriendFromApi(id); + setFriend(friend); + } + load(); }, [props.match.id]); return ; diff --git a/exercise-11/complete/friends/Friends.entry.js b/exercise-11/complete/friends/Friends.entry.js index 4b9e04f..633ab3f 100644 --- a/exercise-11/complete/friends/Friends.entry.js +++ b/exercise-11/complete/friends/Friends.entry.js @@ -7,9 +7,12 @@ import Friends from './Friends'; export default function FriendsEntry() { const [friends, setFriends] = useState([]); - useEffect(async () => { - const friends = await getFriendsFromApi(); - setFriends(friends); + useEffect(() => { + async function load() { + const friends = await getFriendsFromApi(); + setFriends(friends); + } + load(); }, []); return ; diff --git a/exercise-11/friend-detail/FriendDetail.entry.js b/exercise-11/friend-detail/FriendDetail.entry.js index 3b28893..f105c1f 100644 --- a/exercise-11/friend-detail/FriendDetail.entry.js +++ b/exercise-11/friend-detail/FriendDetail.entry.js @@ -7,10 +7,13 @@ import FriendDetail from './FriendDetail'; export default function(props) { const [friend, setFriend] = useState(undefined); - useEffect(async () => { - const id = props.match.params.id; - const friend = await getFriendFromApi(id); - setFriend(friend); + useEffect(() => { + async function load() { + const id = props.match.params.id; + const friend = await getFriendFromApi(id); + setFriend(friend); + } + load(); }, [props.match.id]); return ; diff --git a/exercise-11/friends/Friends.entry.js b/exercise-11/friends/Friends.entry.js index 4b9e04f..633ab3f 100644 --- a/exercise-11/friends/Friends.entry.js +++ b/exercise-11/friends/Friends.entry.js @@ -7,9 +7,12 @@ import Friends from './Friends'; export default function FriendsEntry() { const [friends, setFriends] = useState([]); - useEffect(async () => { - const friends = await getFriendsFromApi(); - setFriends(friends); + useEffect(() => { + async function load() { + const friends = await getFriendsFromApi(); + setFriends(friends); + } + load(); }, []); return ; diff --git a/exercise-13/friend-detail/FriendDetail.entry.js b/exercise-13/friend-detail/FriendDetail.entry.js index 3b28893..f105c1f 100644 --- a/exercise-13/friend-detail/FriendDetail.entry.js +++ b/exercise-13/friend-detail/FriendDetail.entry.js @@ -7,10 +7,13 @@ import FriendDetail from './FriendDetail'; export default function(props) { const [friend, setFriend] = useState(undefined); - useEffect(async () => { - const id = props.match.params.id; - const friend = await getFriendFromApi(id); - setFriend(friend); + useEffect(() => { + async function load() { + const id = props.match.params.id; + const friend = await getFriendFromApi(id); + setFriend(friend); + } + load(); }, [props.match.id]); return ; diff --git a/exercise-13/friends/Friends.entry.js b/exercise-13/friends/Friends.entry.js index 4b9e04f..633ab3f 100644 --- a/exercise-13/friends/Friends.entry.js +++ b/exercise-13/friends/Friends.entry.js @@ -7,9 +7,12 @@ import Friends from './Friends'; export default function FriendsEntry() { const [friends, setFriends] = useState([]); - useEffect(async () => { - const friends = await getFriendsFromApi(); - setFriends(friends); + useEffect(() => { + async function load() { + const friends = await getFriendsFromApi(); + setFriends(friends); + } + load(); }, []); return ; diff --git a/exercise-15/README.md b/exercise-15/README.md index b96f1ea..430ed38 100644 --- a/exercise-15/README.md +++ b/exercise-15/README.md @@ -51,9 +51,12 @@ The side effect we need to run in this component calls out to an API to retrieve In our modern component, we are using `useEffect` to perform this side-effect. It calls out to `getFriendsFromApi` to get the list of friends, then calls the state modifier `setFriends` with the result. ```jsx -useEffect(async () => { - const friends = await getFriendsFromApi(); - setFriends(friends); +useEffect(() => { + async function load() { + const friends = await getFriendsFromApi(); + setFriends(friends); + } + load(); }, []); ``` diff --git a/exercise-15/modern/Friends.entry.js b/exercise-15/modern/Friends.entry.js index 4b9e04f..633ab3f 100644 --- a/exercise-15/modern/Friends.entry.js +++ b/exercise-15/modern/Friends.entry.js @@ -7,9 +7,12 @@ import Friends from './Friends'; export default function FriendsEntry() { const [friends, setFriends] = useState([]); - useEffect(async () => { - const friends = await getFriendsFromApi(); - setFriends(friends); + useEffect(() => { + async function load() { + const friends = await getFriendsFromApi(); + setFriends(friends); + } + load(); }, []); return ; diff --git a/exercise-16/friend-detail/FriendDetail.entry.js b/exercise-16/friend-detail/FriendDetail.entry.js index 3b28893..f105c1f 100644 --- a/exercise-16/friend-detail/FriendDetail.entry.js +++ b/exercise-16/friend-detail/FriendDetail.entry.js @@ -7,10 +7,13 @@ import FriendDetail from './FriendDetail'; export default function(props) { const [friend, setFriend] = useState(undefined); - useEffect(async () => { - const id = props.match.params.id; - const friend = await getFriendFromApi(id); - setFriend(friend); + useEffect(() => { + async function load() { + const id = props.match.params.id; + const friend = await getFriendFromApi(id); + setFriend(friend); + } + load(); }, [props.match.id]); return ; diff --git a/exercise-16/friends/Friends.entry.js b/exercise-16/friends/Friends.entry.js index 4b9e04f..633ab3f 100644 --- a/exercise-16/friends/Friends.entry.js +++ b/exercise-16/friends/Friends.entry.js @@ -7,9 +7,12 @@ import Friends from './Friends'; export default function FriendsEntry() { const [friends, setFriends] = useState([]); - useEffect(async () => { - const friends = await getFriendsFromApi(); - setFriends(friends); + useEffect(() => { + async function load() { + const friends = await getFriendsFromApi(); + setFriends(friends); + } + load(); }, []); return ; diff --git a/exercise-17/friend-detail/FriendDetail.entry.js b/exercise-17/friend-detail/FriendDetail.entry.js index 3b28893..f105c1f 100644 --- a/exercise-17/friend-detail/FriendDetail.entry.js +++ b/exercise-17/friend-detail/FriendDetail.entry.js @@ -7,10 +7,13 @@ import FriendDetail from './FriendDetail'; export default function(props) { const [friend, setFriend] = useState(undefined); - useEffect(async () => { - const id = props.match.params.id; - const friend = await getFriendFromApi(id); - setFriend(friend); + useEffect(() => { + async function load() { + const id = props.match.params.id; + const friend = await getFriendFromApi(id); + setFriend(friend); + } + load(); }, [props.match.id]); return ; diff --git a/exercise-17/friends/Friends.entry.js b/exercise-17/friends/Friends.entry.js index 4b9e04f..633ab3f 100644 --- a/exercise-17/friends/Friends.entry.js +++ b/exercise-17/friends/Friends.entry.js @@ -7,9 +7,12 @@ import Friends from './Friends'; export default function FriendsEntry() { const [friends, setFriends] = useState([]); - useEffect(async () => { - const friends = await getFriendsFromApi(); - setFriends(friends); + useEffect(() => { + async function load() { + const friends = await getFriendsFromApi(); + setFriends(friends); + } + load(); }, []); return ;