Как установить состояние в методе жизненного цикла React recompose?

Я использую recompose в моем проекте React https://github.com/acdlite/recompose/

это отличная библиотека. Я использую compose утилита как компонент контейнера, который передает состояние вниз как реквизит презентационному компоненту, например:

const enhance = compose(
  lifecycle({
    componentDidMount() {
      myCall
        .getResponse([productId])
        .then(products => {
          setIsReady(true);
        });
    },
  }),
  withState('isAvailable', 'setIsAvailable', false),
  withState('isReady', 'setIsReady', false),
  mapProps(({
    setIsAvailable,
    setIsReady,
    ...state,
  }) => ({
    onLogoutTouchTap: () => {
      ...

Примечание setIsReady(true) звонок в пределах componentDidMount. Это то, что я хочу сделать, однако lifecycle/componentDidMount не имеет доступа к setIsReady. Как я могу выполнить предполагаемый результат обновления состояния от componentDidMount С recompose?

1 ответов


Ну я узнал, если вы перемещаете lifecycle способ после withState методы, у вас есть доступ к сеттеров по ссылке this.props.setterFunction. В моем случае вот решение, которое я искал:

const enhance = compose(
  withState('isAvailable', 'setIsAvailable', false),
  withState('isReady', 'setIsReady', false),
  lifecycle({
    componentDidMount() {
      myCall
        .getResponse([productId])
        .then(products => {
          this.props.setIsReady(true);
        });
    },
  }),
  mapProps(({
    setIsAvailable,
    setIsReady,
    ...state,
  }) => ({
    onLogoutTouchTap: () => {
      ...