Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

286
Views
fill an array with useEffect and map()

i am trying to give an array an initial value at every render, This is what i got for the moment

const [activeMarket, setActiveMarket] = useState([]); const Markets = [ 'DE', 'ES', 'FR', 'UK'], i got the values after some filtering in the state.session. const CountryCode = DE, i got the value after some filtering in the state.session.

and i am trying to fill an array at every render using these values this is what i got for the moment

  useEffect(() => {
   markets.map((item) => {
    setActiveMarket([
      ...activeMarket,
      {
        id: item,
        isActiveMarket: true,
        brandName,
      },
    ]);
  });
}, []);

i keep getting an empty array, i don't know what i am doing wrong exactly cause when i did this it worked but only with one object:

  useEffect(() => {
   setActiveMarket([
     ...activeMarket,
     {
       id: countryCode,
       isActiveMarket: true,
       brandName,
     },
   ]);
 }, []);
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Try creating a new local array in the useEffect and then after mapping it, assign it to the state variable like this:

useEffect(() => {
   const tmpMarkets = markets.map((item) => ({
      id: item,
      isActiveMarket: true,
      brandName
   });
   setActiveMarket(tmpMarkets);
}, []);

Your first snippet is continuously resetting the state variable in each loop, so that's why you are not getting the right array.

about 4 years ago · Juan Pablo Isaza Report

0

you can do this

  useEffect(() => {
   
    setActiveMarket(activeMarket => [
      ...activeMarket,
      ...markets.map((item, i) => ({
        id: item,
        isActiveMarket: i === 0,
        brandName,
      }))
    ]);
  });
}, []);

your first example is not right because you are continuously setting the state and that triggers the rerendering of the component

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!