道具用compose()以哪种方式流动?

时间:2017-08-17 09:30:27

标签: reactjs recompose

请考虑以下事项:

const Foo = defaultProps({
        foo: "foo"
});

compose(
    Foo,
    LoadJson,
    RunParser
)(Bar);

在这种情况下,道具foo会向下流过LoadJson->RunParser->Bar吗?或者它是否以相反的顺序,foo流经RunParser->LoadJson->Bar

有没有更好的方法来概念性地设想这个而不是像这样的线性流?

1 个答案:

答案 0 :(得分:1)

正如你所看到的here,道具从左向右流动,这意味着左边定义的道具对右边的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>
)