Во всех примерах, которые я рассматривал, функция, фактически вызываемая в withHandlers
, похоже, вызывает функцию из props
, но я понятия не имею, как эта функция определена. Вот небольшой пример из документов для людей.
compose(
withState('count', 'setCount', 0),
withHandlers({
incrementCount: props => event => {
event.preventDefault()
props.setCount(props.count + 1)
}
})
)(ComponentToEnhance)
Насколько я понимаю, это создаст HOC с «состоянием» для отслеживания count
. Я мог бы увеличить счетчик с помощью действия, использующего определенный обработчик (например, onClick={incrementCount}
).
Тогда мой вопрос: где на самом деле определено setCount
.. Я представляю что-то вроде
function setCount(i) {
return i+1;
}
Поскольку он вызывается из реквизита, вам нужно передавать его как реквизит при использовании компонента? Я не понимаю, зачем withState
нужно знать имя средства обновления состояния или как оно вообще связано, если это так.
Он просто автоматически определяет для вас функцию, которая заменит параметр состояния любым аргументом, который вы ему передадите (facepalm, если это так..)