props 以何种方式与 compose() 一起流动?
Which way do props flow with compose()?
考虑以下几点:
const Foo = defaultProps({
foo: "foo"
});
compose(
Foo,
LoadJson,
RunParser
)(Bar);
在这种情况下,道具foo
是否流经LoadJson->RunParser->Bar
?或者是相反的顺序,其中 foo
流经 RunParser->LoadJson->Bar
?
有没有比那样的线性流程更好的概念设想方法?
如您所见here,props 从左向右流动,这意味着在左侧定义的 props 对右侧的 HOC 可见。所以在你的情况下,LoadJson 和 RunParser 应该看到道具 foo
const enhance = compose(
withProps({
offset: 10,
}),
withState('count', 'updateCount', 0),
withHandlers({
increment: props => () => props.updateCount(n => n + 1 + props.offset),
decrement: props => () => props.updateCount(n => n - 1)
})
)
const Counter = enhance(({ count, increment, decrement }) =>
<div>
Count: {count}
<div>
<button onClick={increment}>+</button>
<button onClick={decrement}>-</button>
</div>
</div>
)
考虑以下几点:
const Foo = defaultProps({
foo: "foo"
});
compose(
Foo,
LoadJson,
RunParser
)(Bar);
在这种情况下,道具foo
是否流经LoadJson->RunParser->Bar
?或者是相反的顺序,其中 foo
流经 RunParser->LoadJson->Bar
?
有没有比那样的线性流程更好的概念设想方法?
如您所见here,props 从左向右流动,这意味着在左侧定义的 props 对右侧的 HOC 可见。所以在你的情况下,LoadJson 和 RunParser 应该看到道具 foo
const enhance = compose(
withProps({
offset: 10,
}),
withState('count', 'updateCount', 0),
withHandlers({
increment: props => () => props.updateCount(n => n + 1 + props.offset),
decrement: props => () => props.updateCount(n => n - 1)
})
)
const Counter = enhance(({ count, increment, decrement }) =>
<div>
Count: {count}
<div>
<button onClick={increment}>+</button>
<button onClick={decrement}>-</button>
</div>
</div>
)