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

Я использую рекомпозицию в моем проекте 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, Это то, что я хочу сделать, однако жизненный цикл /componentDidMount не имеет доступа к setIsReady, Как я могу достичь желаемого результата обновления состояния из componentDidMount с перекомпоновкой?

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: () => {
      ...
Другие вопросы по тегам