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

135
Views
Cómo implementar el patrón de devolución de llamada setState con useState

Tengo varias setState(newState, callback) en mi componente Class. Ahora que estoy cambiando a usar ganchos, no puedo poner todas las devoluciones de llamada en un useEffect y llamarlas condicionalmente.

Algunas llamadas a setState no se distinguen con respecto a los cambios que están realizando (pueden estar cambiando la misma matriz almacenada en useState ), pero todas activan devoluciones de llamada muy diferentes. No puedo simplemente poner diferentes condiciones en useState y disparar devoluciones de llamada.

Toda la lógica se está volviendo mucho más compleja. ¿Cómo ha manejado cambiar setState a useState sin afectar las devoluciones de llamada o tener que hacer cambios lógicos muy complejos dentro useEffect ?

Código de ejemplo:

 resetSelections = () => { const { filterData, toggleSidebarOnReset, toggleSidebar } = this.props; this.setState( { selections: getSelectionsFromFilterData(filterData), }, () => { this.triggerAdvancedFilter(); if (toggleSidebarOnReset && toggleSidebar) { toggleSidebar(); } if (this.props.removeFilterDefaultSelection) { this.props.removeFilterDefaultSelection(); } } ); }; addCustomField = filterGroupData => { this.setState( prevState => ({ customSelectionsMap: { ...prevState.customSelectionsMap, [filterGroupData.name]: filterGroupData.id, }, selections: { ...prevState.selections, [filterGroupData.name]: [], }, }), () => this.props.addCustomFieldInFilterData(filterGroupData) ); }; removeCustomField = data => { const { selections, customSelectionsMap } = this.state; const newSelections = { ...selections }; const newCustomSelectionsMap = { ...customSelectionsMap }; delete newSelections[data.name]; delete newCustomSelectionsMap[data.name]; this.setState( { selections: newSelections, customSelectionsMap: newCustomSelectionsMap, }, () => { this.props.removeCustomFieldFromFilterData(data); this.triggerAdvancedFilter(); } ); }; addToSelection = ({ group, name }, isReplace) => { const { selections } = this.state; if (R.contains(name, selections[group])) return null; const pushState = isReplace ? '$set' : '$push'; this.setState( prevState => ({ selections: update(prevState.selections, { [group]: { [pushState]: [name] }, }), }), () => this.triggerAdvancedFilter() ); };
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede aplicar su implementación de devolución de llamada en useEffect dando su variable de estado en la matriz de dependencia

También puede consultar esto Cómo usar la devolución de llamada `setState` en ganchos de reacción

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!