在我的工作中,我们使用了recompose,并且使用了这种咖喱函数,对我来说似乎过于复杂,使我的大脑受伤。
有人可以用英语解释它的工作原理吗?
谢谢
withStateHandlers(({ readAt, isSender }) => ({ trackVisibility: !isSender && !readAt }), {
updateTrackVisibility: () => () => ({
trackVisibility: false,
}),
}),
我知道readAt和isSender来自上面声明的一个片段。
最令人困惑的部分是在updateTrackVisibility
???
答案 0 :(得分:1)
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)} />
)
}