Я использую withReducer HOC и заметил такое поведение: например, вызов обработчика кликов:
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>
)
})
Он будет производить
Привет
Мир
один
два
три
Это означает, что функция сокращения вызывается асинхронно. Какое оправдание для того, чтобы называть его асинхронным, а не сразу применять изменения для хранения?