Из перекомпоновать API :
withStateHandlers(
initialState: Object | (props: Object) => any,
stateUpdaters: {
[key: string]: (state:Object, props:Object) => (...payload: any[]) => Object
}
)
props
- реквизиты, переданные от родительского (или выше HOC)
state
передается от объекта, созданного в initialState
payload
, параметры передаются с места, где мы запустили функцию (обработчик)
Что означает в вашемкод:
первый параметр - ({ readAt, isSender }) => ({ trackVisibility: !isSender && !readAt })
- создать реквизит trackVisibility (с закодированным значением)
второй параметр - добавить функциюкоторый при срабатывании делает trackVisibility
ложным
Другой (надуманный) пример:
const enhancer = withStateHandlers(({ title, text, maxChars }) => ({ isLongTitle: title.length > maxChars, text }), {
addText: (state, props) => (text) => ({
text: state.text + text,
isLongTitle: state.text.length + text.length > props.maxChars
}),
})
const MyComponent = enhancer(props => {
return (
<input onChange={event => props.addText(event.target.value)} />
)
}