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

91
Views
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 answers
Answer question

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 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!