Как установить 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: () => {
...