diff --git a/src/components/Programmers.js b/src/components/Programmers.js
index bb4aee6bd..aa8fb8fcb 100644
--- a/src/components/Programmers.js
+++ b/src/components/Programmers.js
@@ -11,7 +11,7 @@ We can only feature one awesome programmer at a time.
Find comments below to help you along.
*/
-import React from 'react';
+import React, { useState } from 'react';
// Use this variable ONLY to initialize a slice of state!
// There is something in the JSX right now breaking this rule...
@@ -28,19 +28,27 @@ export const listOfAwesome = [
export default function Programmers() {
// We'll have to use the state hook twice, as we need two slices of state.
// The programmers list on the one hand, and the id of the featured programmer on the other.
-
+const [programmers, setProgrammers] = useState(listOfAwesome);
+// console.log(programmers)
+const [featured, setGetFeatured] = useState(null)
const getNameOfFeatured = () => {
// Leave this for last!
// This is NOT an event handler but a helper function. See its usage inside the JSX.
// It's going to utilize both slices of state to return the _name_ of the featured dev.
// The beauty of closures is that we can "see" both slices of state from this region
// of the program, without needing to inject the information through arguments.
+ for(let i = 0; i < programmers.length; i++){
+ if(programmers[i] === featured){
+ return programmers[i].name;
+ }
+ }
+
};
const style = {
fontSize: '1.5em',
marginTop: '0.5em',
- color: 'royalblue', // 🤔 color turns to gold, when celebrating
+ color: featured ? 'gold':'royalblue', // 🤔 color turns to gold, when celebrating
};
return (
@@ -51,9 +59,9 @@ export default function Programmers() {
/* Nasty bug! We should map over a slice of state, instead of 'listOfAwesome'.
We might think: "it works, though!" But if the list of programmers is not state,
we could never add or edit programmers in the future. The list would be a static thing." */
- listOfAwesome.map(dev =>
+ programmers.map(dev =>
- {dev.name}
+ {dev.name}
)
}
@@ -63,7 +71,7 @@ export default function Programmers() {
// Ternaries are fantastic to render "one thing or the other" depending on the "truthiness" of something.
// Pseudo-code: if the currently featured id is truthy render text 1, otherwise render text 2.
// Replace the hard-coded false with the correct variable.
- false
+ featured
? `🎉 Let's celebrate ${getNameOfFeatured()}! 🥳`
: 'Pick an awesome programmer'
}
diff --git a/src/components/Spinner.js b/src/components/Spinner.js
index d0326fd34..5da2b3544 100644
--- a/src/components/Spinner.js
+++ b/src/components/Spinner.js
@@ -37,23 +37,26 @@ STEP 4:
Do you remember the operator we use to do "not"?
*/
-import React from 'react'; /* STEP 0 */
+import React, {useState} from 'react'; /* STEP 0 */
export default function Spinner() {
/* STEP 1 */
+const [spinnerOn, setSpinnerOn] = useState(true);
const toggleSpinner = () => {
/* STEP 4 */
+ setSpinnerOn(!spinnerOn);
};
return (