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

90
Visualizações
En React Js, desea renderizar el componente solo si se actualizan los accesorios

Quiero renderizar el componente si sus accesorios están actualizados, otros no necesitan renderizar. Pero en mi código, puedo ver que se está procesando con un comportamiento inesperado.

Reaccionar Versión 17.XX

Vea el código a continuación

índice.js

 const root = ReactDOM.createRoot(document.getElementById('root')); root.render( <React.StrictMode> <App /> </React.StrictMode> );

archivo app.js

 import React, { useState, useCallback} from 'react' import ListItem from './ListItem' function App() { const [itemList, setItemList] = useState([]); const [counter, setCounter] = useState(0); const increase = useCallback(() => setCounter(prevState => prevState + 1), counter); return ( <div className="App"> <ListItem itemList={itemList} addItem={(val) => setItemList(prev => [...prev,val])}/> <button onClick={increase}> Increament Count </button> </div> ); } export default App;

ListItem.js

 import React, {memo} from 'react'; const ListItem = memo(props) => { console.log('listItem render...'); return ( <div>{props.itemList.map((c) => <span>{c}</span>)}</div> <button onClick={() => props.addItem(props.itemList.length + 1)}>+ Add Item</button> ) } export default ListItem;

Puede ver mi código y ahora quiero entender cómo puedo evitar una representación inesperada. Porque useCallback usando puedo evitar el reinicio de ese método. pero el componente ListItem si puede ver que se está procesando incluso si está agregando valor de contador.

Hazme saber si tienes alguna pregunta.

Gracias por la ayuda.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es porque addItem tiene un accesorio de tipo de método, por lo que debe crear un useCallback() para ese método que ha pasado como accesorio en addItem . Esto funcionará para usted:

 const onAddItem = useCallback((val) => { setItemList(prev => [...prev,val]); }, [itemList]); <ListItem itemList={itemList} addItem={onAddItem}/>
about 4 years ago · Santiago Trujillo 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