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

245
Views
Recomponer "withReducer": justificación de la llamada a la función reductora asíncrona

Estoy usando withReducer HOC y noté este comportamiento: llamar a esto en el controlador de clics, por ejemplo:

 import React from 'react' import { withReducer } from 'recompose' import { compose } from 'ramda' export default compose( withReducer('state', 'dispatch', (state, { value }) => { console.log(value) return { ...state, value } }, { value: 'zero' }) )((props) => { const { dispatch, state } = props, onClick = () => { console.log('Hello') dispatch({ value: 'one' }) dispatch({ value: 'two' }) dispatch({ value: 'three' }) console.log('World') } return ( <div> <div>{state.value}</div> <button onClick={onClick}>Click me</button> </div> ) })

producirá

Hola

Mundo

uno

dos

Tres

Esto significa que la función de reducción se llama de forma asincrónica. ¿Cuál es la justificación para llamarlo asíncrono en lugar de aplicar cambios a la tienda de inmediato?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

El reductor se llama de forma asíncrona porque solo podemos usar setState para actualizar el árbol y setState es asíncrono.

Si llamamos al reductor de forma sincrónica, necesitaremos guardar el nuevo estado en algún lugar, luego llamar a setState y obtener el nuevo estado de forma asíncrona desde donde lo guardamos. Al final, su árbol aún se actualiza de forma asíncrona.

Esta es la razón por la que withReducer() de recompose es ligeramente diferente de redux. Puedes pensar que withReducer es una versión simplificada de redux + react-redux's connect() .

over 4 years ago · Santiago Trujillo Report

0

En este caso, dispatch es en realidad un contenedor para el método setState de la API Vanilla.

React implementa setState de forma asíncrona porque las transiciones de estado a veces se agrupan por lotes por motivos de rendimiento.

De acuerdo con los documentos React:

setState() no muta inmediatamente este.estado, sino que crea una transición de estado pendiente... No hay garantía de funcionamiento síncrono de las llamadas a setState y las llamadas pueden agruparse para mejorar el rendimiento.

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