FAQ: The Effect Hook - Function Component Effects

This community-built FAQ covers the “Function Component Effects” exercise from the lesson “The Effect Hook”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn React

FAQs on the exercise Function Component Effects

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!
You can also find further discussion and get answers to your questions over in Language Help.

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head to Language Help and Tips and Resources. If you are wanting feedback or inspiration for a project, check out Projects.

Looking for motivation to keep learning? Join our wider discussions in Community

Learn more about how to use this guide.

Found a bug? Report it online, or post in Bug Reporting

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

Does it matter where you call useEffect()? The lesson said to put it in a certain place. Not sure if that’s for the sake of the code testing.

3 Likes

Hello. I’m also wondering if we need to put useEffect() at a certain place…

I 'm wondering why also!!

useEffect( ) still works the same if you put it in a certain place, but you must always put useEffect( ) before the return keyword. Here are some rules of Hooks you need to know in React: https://reactjs.org/docs/hooks-rules.html

@alvinyang5036814935 @chip5010245305

2 Likes

calling useEffect() after handleClick doesn’t violate any rules as per the ‘docs’, but the test does flag that as an error.
there may be some other reason for that…

3 Likes

Why does the test fail if I put the code this way even though the code functions as it suppose to.

useEffect(() => alert(Count: ${count}));

But the tests passes with this:

useEffect(()=> {alert(Count: ${count})});

1 Like

This is a really simple question and im probably forgetting a basic concept somewhere but how come for question 2 of this exercise,
useEffect(()=>alert({count}))
doesnt work…and you have to put alert in curly brackets?
useEffect(()=>{alert({count})})

Is it because alert() is a javascript function and anything returned from a javascript function must be within curly brackets? I think I read that somewhere but I cant really remember for sure.
And if that’s the case shouldnt we be putting a curly bracket around the entire arrow function? Like:
useEffect({()=>alert({count})})
since the arrow function is a javascript function.

Thanks.

This is because the callback parameter of the useEffect() function must not return a value.
When you run useEffect(()=>alert({count})) you are returning alert() to useEffect(). This way works since alert() returns undefinded, but it doesn’t make sense.

useEffect(()=>alert({count})) is the same as writing

useEffect(() => {
   return alert({count});
})

Hope this helps

2 Likes

I’m a bit confused about this sentence from the lesson:

The Effect Hook is used to call another function that does something for us so there is nothing returned when we call the useEffect() function.

Is it just saying that calling useEffect() returns undefined?

So it turns out that useEffect() is triggered first, and only then the component is rendered?
Since in the alert we see the message “Count: 3”, but on the page there is still 2.

I was having a hard time understanding how the name variable was going to stay in scope inside the Effect Hook callback () => {document.title = `Hi, ${name}`;} once the PageTitle function Component was finished executing. I know that scoping of inner functions was covered earlier in the Career Path, however, I’m not remembering the lesson fully.

To anybody else with confusion, although dense, this resource documents the concept: Closures - JavaScript | MDN

function makeFunc() {
  const name = "Mozilla";
  function displayName() {
    console.log(name);
  }
  return displayName;
}

const myFunc = makeFunc();
myFunc();

…functions in JavaScript form closures. A closure is the combination of a function and the lexical environment within which that function was declared. This environment consists of any local variables that were in-scope at the time the closure was created. In this case, myFunc is a reference to the instance of the function displayName that is created when makeFunc is run. The instance of displayName maintains a reference to its lexical environment, within which the variable name exists.