Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

385
Visualizações
El componente no se procesa después de actualizar, solo después de cambiar y guardar el código

Tengo un problema cuando trato de presentar una lista de países que obtengo de la matriz de personas que tengo de localStorage.

Cuando actualizo la página, no recibo la lista, pero cuando cambio algo en mi código y lo guardo, sí obtengo la lista.

He agregado el código, me refiero a la función getCountries dentro de useEffect donde obtengo todos los países, obtengo una matriz única que los ordena y luego los guardo en el estado.

agradezco cualquier ayuda

 import React, { useEffect, useState } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { loadPeople, removePerson, setFilterBy } from '../cmps/store/people.action.js'; import { PeopleList } from '../cmps/PeopleList'; import Filters from '../cmps/Filters.jsx'; export const RecipePage = () => { const [currentPage, setCurrentPage] = useState(1); const [postsPerPage] = useState(6); const [countries, setCountries] = useState([]); const peoples = useSelector((state) => state?.peopleModule?.peoples); const dispatch = useDispatch(); useEffect(() => { const getCountries = async () => { const countryArray = await peoples.map((person) => { return person.location.country; }); const uniqueCountryArray = [...new Set(countryArray)]; const sortedArray = uniqueCountryArray?.sort((a, b) => a.localeCompare(b)); setCountries(sortedArray); }; getCountries(); }, []); useEffect(() => { dispatch(loadPeople()); }, []); const onHandleRemovePerson = (id) => { dispatch(removePerson(id)); }; const onChangeFilter = (filterBy) => { dispatch(setFilterBy(filterBy)); dispatch(loadPeople()); }; return ( <> <div className='main-layout'> <Filters countries={countries} onChangeFilter={onChangeFilter} /> <PeopleList peoples={currentPost} onHandleRemovePerson={onHandleRemovePerson} /> <Pagination postsPerPage={postsPerPage} totalPosts={peoples.length} paginate={paginate} /> </div> </> ); };
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Intenta agregar personas como dependencia

 useEffect(() => { const getCountries = async () => { const countryArray = await peoples.map((person) => { return person.location.country; }); const uniqueCountryArray = [...new Set(countryArray)]; const sortedArray = uniqueCountryArray?.sort((a, b) => a.localeCompare(b)); setCountries(sortedArray); }; getCountries(); }, [peoples]);
about 4 years ago · Juan Pablo Isaza Relatório

0

al ordenar y configurar la matriz, el estado no lo entiende como un cambio, cuando usa el operador de distribución funcionará bien.

 setCountries([...sortedArray]);
about 4 years ago · Juan Pablo Isaza Relatório

0

También enfrenté una situación similar cuando la página no mostraba la lista al actualizar.

Más tarde me di cuenta de que me olvidé de mencionar los estados en los que la página debería mostrarse nuevamente.

Ex:

 useEffect(() => { },[state1, state2]);

Esto resolvió mi problema y obtuve la lista.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda