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>
)