From 9a4ef1fe82926b2d0fe5d1a998deeb18ca642052 Mon Sep 17 00:00:00 2001 From: tessawiedmann Date: Fri, 24 Nov 2023 11:29:07 +0100 Subject: [PATCH 1/6] Setting up lifting state and making sure props are passed correctly --- src/components/character-list.js | 32 ++++++++++++++++++++++++++++++-- src/components/character.js | 2 +- src/components/like-counter.js | 6 ++++-- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/components/character-list.js b/src/components/character-list.js index 23d9f2e..1bee6fb 100644 --- a/src/components/character-list.js +++ b/src/components/character-list.js @@ -10,7 +10,12 @@ const CharacterList = () => { const getCharacters = async () => { const response = await axios.get('https://my-json-server.typicode.com/TechmongersNL/fs03-react/characters'); console.log(response.data); - setCharacters(response.data); + + const charactersWithLikes = response.data.map((character) => { + return {...character, likes: 0} + }) + console.log(charactersWithLikes, 'character with likes') + setCharacters(charactersWithLikes); } // If you don't put getCharacters in a useEffect hook, getCharacters will be called (and will make an Axios request) every time CharactersList gets re-rendered @@ -22,6 +27,13 @@ const CharacterList = () => { getCharacters(); }, []); + const increaseLikes = () => { + // when this function is called, I want to increase the amount of likes on that character + // in order to update a character, I need to use setCharacters + setCharacters(characters); + console.log('increase likes was clicked') + } + const getCharactersComponents = () => { return characters.map((character, index) => { return ( @@ -32,16 +44,32 @@ const CharacterList = () => { blood={character.blood} imgUrl={character.imgUrl} quote={character.quote} + likes={character.likes} + increaseLikes={increaseLikes} /> ) }) } + //const totalLikes = 0; + const calculateTotalLikes = () => { + let likesSum = 0; + characters.forEach((character) => { + likesSum = likesSum + character.likes; + }) + return likesSum; + } + return ( // if characters data is not null (the initial value of the characters state variable) // then I want to show Characters components // else I want to show "loading..." - characters ? getCharactersComponents() : 'Loading...' + <> +

Total number of likes: {characters ? calculateTotalLikes() : 'Loading...'}

+
+ {characters ? getCharactersComponents() : 'Loading...'} +
+ ) } diff --git a/src/components/character.js b/src/components/character.js index 51ea4eb..535527e 100644 --- a/src/components/character.js +++ b/src/components/character.js @@ -22,7 +22,7 @@ const Character = (props) => {

Quote

{props.quote}

- +
) diff --git a/src/components/like-counter.js b/src/components/like-counter.js index 762cfdb..846a061 100644 --- a/src/components/like-counter.js +++ b/src/components/like-counter.js @@ -1,8 +1,10 @@ import {useState} from 'react'; import '../styles/like-counter.css'; -const LikeCounter = () => { - const [count, setCount] = useState(0); +const LikeCounter = (props) => { + //const [count, setCount] = useState(0); + const count = props.likes; + const setCount = props.increaseLikes; const [favorite, setFavorite] = useState(false); const whenIncreaseButtonClicked = () => { From d2218cdebb138a248ae15c66dd3331199e876535 Mon Sep 17 00:00:00 2001 From: tessawiedmann Date: Fri, 24 Nov 2023 11:54:26 +0100 Subject: [PATCH 2/6] making increaseLikes work --- src/components/character-list.js | 32 +++++++++++++++++++++++++++----- src/components/character.js | 2 +- src/components/like-counter.js | 16 ++++++++-------- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/components/character-list.js b/src/components/character-list.js index 1bee6fb..ddea7e1 100644 --- a/src/components/character-list.js +++ b/src/components/character-list.js @@ -27,18 +27,39 @@ const CharacterList = () => { getCharacters(); }, []); - const increaseLikes = () => { + const increaseLikes = (id) => { // when this function is called, I want to increase the amount of likes on that character // in order to update a character, I need to use setCharacters - setCharacters(characters); - console.log('increase likes was clicked') + + // to update the character: first we need to find the character that we want to update + // then make a copy of that character, and increase the amount of likes in it + // add that updatedCharacter back into our updatedArray + // setCharacter(updatedArray) + const characterToUpdate = characters.find((character) => { + return character.id === id + }) + console.log(characterToUpdate); + const updatedCharacter = {...characterToUpdate, likes: characterToUpdate.likes + 1} + console.log(updatedCharacter) + const updatedArray = characters.map((character) => { + if (character.id === id) { + return updatedCharacter; + } else { + return character; + } + }) + console.log(characters, 'characters before update') + console.log(updatedArray, 'characters after update'); + + setCharacters(updatedArray); + console.log('increase likes was clicked with id: ' + id) } const getCharactersComponents = () => { - return characters.map((character, index) => { + return characters.map((character) => { return ( { quote={character.quote} likes={character.likes} increaseLikes={increaseLikes} + id={character.id} /> ) }) diff --git a/src/components/character.js b/src/components/character.js index 535527e..450355b 100644 --- a/src/components/character.js +++ b/src/components/character.js @@ -22,7 +22,7 @@ const Character = (props) => {

Quote

{props.quote}

- +
) diff --git a/src/components/like-counter.js b/src/components/like-counter.js index 846a061..9627d24 100644 --- a/src/components/like-counter.js +++ b/src/components/like-counter.js @@ -4,24 +4,24 @@ import '../styles/like-counter.css'; const LikeCounter = (props) => { //const [count, setCount] = useState(0); const count = props.likes; - const setCount = props.increaseLikes; + const increaseLikes = props.increaseLikes; const [favorite, setFavorite] = useState(false); const whenIncreaseButtonClicked = () => { - setCount(count + 1); + increaseLikes(props.id); }; - const whenDecreaseButtonClicked = () => { - if (count > 0) { - setCount(count - 1); - } - } + // const whenDecreaseButtonClicked = () => { + // if (count > 0) { + // setCount(count - 1); + // } + // } return ( <>

Number of likes: {count}

- + {/* */}

{favorite && '⭐️'}

From af1096054347c874bf25ee3c9505ae81b1795ec6 Mon Sep 17 00:00:00 2001 From: tessawiedmann Date: Fri, 24 Nov 2023 12:14:30 +0100 Subject: [PATCH 3/6] Use one map instead of filter + map --- src/components/character-list.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/components/character-list.js b/src/components/character-list.js index ddea7e1..6bce3c7 100644 --- a/src/components/character-list.js +++ b/src/components/character-list.js @@ -35,15 +35,9 @@ const CharacterList = () => { // then make a copy of that character, and increase the amount of likes in it // add that updatedCharacter back into our updatedArray // setCharacter(updatedArray) - const characterToUpdate = characters.find((character) => { - return character.id === id - }) - console.log(characterToUpdate); - const updatedCharacter = {...characterToUpdate, likes: characterToUpdate.likes + 1} - console.log(updatedCharacter) const updatedArray = characters.map((character) => { if (character.id === id) { - return updatedCharacter; + return {...character, likes: character.likes + 1}; } else { return character; } From 3ecb7482af4aef1c455fd808f6624ebb211391b6 Mon Sep 17 00:00:00 2001 From: tessawiedmann Date: Fri, 24 Nov 2023 13:14:08 +0100 Subject: [PATCH 4/6] Add diagram --- README.md | 3 +++ diagram.png | Bin 0 -> 64110 bytes 2 files changed, 3 insertions(+) create mode 100644 diagram.png diff --git a/README.md b/README.md index 9651a8d..41461c3 100644 --- a/README.md +++ b/README.md @@ -32,3 +32,6 @@ Fetching data from API flow 5. Call the async function inside useEffect 6. Check my console.log and put the data in the state 7. Render something on the screen based on state + +## Lifting state diagram +![Lifting state diagram](diagram.png) \ No newline at end of file diff --git a/diagram.png b/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..d2865e87b9511356c5e0d9d3c26bc707f4beb6dc GIT binary patch literal 64110 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 MtgcFl(#7Ea1Ng`~0RR91 literal 0 HcmV?d00001 From a1d773fa4f8cc003198b4f48061f967a9fce6765 Mon Sep 17 00:00:00 2001 From: tessawiedmann Date: Fri, 24 Nov 2023 13:14:31 +0100 Subject: [PATCH 5/6] Add more comments --- src/components/character-list.js | 7 +++---- src/components/character.js | 1 + src/components/like-counter.js | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/components/character-list.js b/src/components/character-list.js index 6bce3c7..b95ce46 100644 --- a/src/components/character-list.js +++ b/src/components/character-list.js @@ -42,11 +42,11 @@ const CharacterList = () => { return character; } }) - console.log(characters, 'characters before update') - console.log(updatedArray, 'characters after update'); + // console.log(characters, 'characters before update') + // console.log(updatedArray, 'characters after update'); setCharacters(updatedArray); - console.log('increase likes was clicked with id: ' + id) + // console.log('increase likes was clicked with id: ' + id) } const getCharactersComponents = () => { @@ -67,7 +67,6 @@ const CharacterList = () => { }) } - //const totalLikes = 0; const calculateTotalLikes = () => { let likesSum = 0; characters.forEach((character) => { diff --git a/src/components/character.js b/src/components/character.js index 450355b..d6069cf 100644 --- a/src/components/character.js +++ b/src/components/character.js @@ -22,6 +22,7 @@ const Character = (props) => {

Quote

{props.quote}

+ {/* Passing props from CharacterList even further down into LikeCounter */}
diff --git a/src/components/like-counter.js b/src/components/like-counter.js index 9627d24..999ca38 100644 --- a/src/components/like-counter.js +++ b/src/components/like-counter.js @@ -2,7 +2,9 @@ import {useState} from 'react'; import '../styles/like-counter.css'; const LikeCounter = (props) => { + // No more local state, it's now being passed in through props //const [count, setCount] = useState(0); + const count = props.likes; const increaseLikes = props.increaseLikes; const [favorite, setFavorite] = useState(false); @@ -10,6 +12,10 @@ const LikeCounter = (props) => { const whenIncreaseButtonClicked = () => { increaseLikes(props.id); }; + + // Can you think of ways to make the decrease button work? + // Option 1: Create a new decreaseLikes function in CharacterList, and pass it down through props + // Option 2: Pass a boolean variable (also called a "flag") to increaseLikes. When the value is true, increase likes by 1. When it's false, decrease likes by 1 // const whenDecreaseButtonClicked = () => { // if (count > 0) { // setCount(count - 1); From 0b89bea19ff48279edf5f1d9b10e60ccd29670ec Mon Sep 17 00:00:00 2001 From: tessawiedmann Date: Mon, 11 Dec 2023 14:21:41 +0100 Subject: [PATCH 6/6] Add comments about "likes" --- src/components/character-list.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/character-list.js b/src/components/character-list.js index b95ce46..1dce396 100644 --- a/src/components/character-list.js +++ b/src/components/character-list.js @@ -8,13 +8,18 @@ const CharacterList = () => { const [characters, setCharacters] = useState(null); const getCharacters = async () => { + // Get the characters data from the API const response = await axios.get('https://my-json-server.typicode.com/TechmongersNL/fs03-react/characters'); console.log(response.data); + // We want to keep track of the number of "likes" for each character in our state now too + // Add our own "likes" key into each character object const charactersWithLikes = response.data.map((character) => { return {...character, likes: 0} }) console.log(charactersWithLikes, 'character with likes') + + // Each character, now with data from the API and our own "likes" data, is saved into the local React state setCharacters(charactersWithLikes); }