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

124
Visualizações
El componente React no se vuelve a renderizar

estoy pasando valores usando reaccionar redux todo se pasa pero el componente que quiero renderizar solo se renderiza 1 vez y cuando guardo mi código en vscode (se renderiza de nuevo) los datos se renderizan en la página como debería

 return ( <div className='fav-container' id='favorites'> {FavoritesData.data.length === 0 ? ( <h5>You Don't Have Any Favorites Yet!</h5> ) : ( <div className="favorites-grid">{FavoritesData.data.map((item) => <Favorite item={item} />)}</div> )} <button onClick={() => console.log(FavoritesData.data.length)}></button> </div> );

en el registro, los datos se actualizan pero la función trenaria no se activa, lo mismo ocurre con useEffect

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

¿Está sobrescribiendo datos o simplemente actualizándolos? Si solo está actualizando en el lugar, la referencia no cambiará. No tengo suficiente información para hacer este diagnóstico, pero sospecho que está viendo el mismo comportamiento en React que vería aquí:

 // in the example below, the two variables are essentially storing the exact same array, not copies of the same array const myArr = [1, 2, 3]; // storing a reference to the myArr array const myOtherArr = myArr; myOtherArr.push(4); console.log(myArr); // prints [1, 2, 3, 4] // in this example, the arrays are different const myArr = [1, 2, 3]; // store a copy of all the values from myArr in a new array literal const myOtherArr = [...myArr]; myOtherArr.push(4); console.log(myArr) // prints [1, 2, 3]

En React, que impone un enfoque funcional, querrá sobrescribir FavoritesData.data por completo; de lo contrario, la referencia en realidad no cambiará y React pensará que está mirando exactamente la misma matriz. Si sospecha que se trata de un diagnóstico erróneo o si todavía tiene preguntas, publique el código que actualiza FavoritesData.data y actualizaré mi respuesta.

about 4 years ago · Juan Pablo Isaza Relatório

0

El problema no está en actualizar los valores, el problema no está en recorrer los componentes.

Lo actualizo con redux, reductor:

 case 'ADD_FAVORITES': state.data.push(action.payload) return state case 'DEL_FAVORITES': let favoritesArr = [ ...state.data ]; state.data = favoritesArr.filter(fav => fav.cityName !== action.payload.cityName); return state default: return state } }

El clic useEffect en el otro componente

 useEffect(() => { const fav = { cityName:CityData.EnglishName, TemperatureMetricValue:WeatherData.TemperatureMetricValue, TemperatureImperialValue: WeatherData.TemperatureImperialValue, WeatherText: WeatherData.WeatherText} const FavoritesPromise = async (favorites) => { return favorites; } isClick ? FavoritesPromise(fav) .then(data=>{ dispatch(addFavorites(data)) localStorage.setItem('location',JSON.stringify(FavoritesData.data)) }) .catch(err => console.log(err)) : FavoritesPromise(fav) .then(data=>{ FavoritesData.data.map((item) => { if(item.cityName == CityData.EnglishName){ dispatch(delFavorites(item)) localStorage.setItem('location',JSON.stringify(FavoritesData.data)) } }) }) .catch(err => console.log(err)) },[isClick])

Ahora, cuando trato de devolver el valor al html, no lo representa, pero cuando registro los valores, parece que lo está pasando.

 return ( <div className='fav-container' id='favorites'> {FavoritesData.data.length === 0 ? ( <h5>You Don't Have Any Favorites Yet!</h5> ) : ( <div className="favorites-grid">{FavoritesData.data.map((item) => <Favorite item={item} />)}</div> )}

Cuando registro la longitud que está cambiando, probé la misma lógica con useEffect cuando la longitud cambia y no se activa también.

 <button onClick={() => console.log(FavoritesData.data.length)}></button> </div> ); };
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