Size: a a a

2020 May 05

IH

Ilya Human in Frontend_ru
Я вижу, но он вроде пытается )
источник

IN

Igor N in Frontend_ru
Aga Mahmudov
Густой туман, попробовал
`
         useEffect(() => {
           // Update the document title using the browser API
           setCount(1)
         });
`
В другой функции класса, где считаются эти 5 секунд. Он говорил Invalid hook call
источник

AM

Aga Mahmudov in Frontend_ru
Igor N
Тебе скорее всего нужно componentDidUpdate
componentDidUpdate(prevProps, prevState) {
   if (prevState.dislikeOpacity !== this.state.dislikeOpacity) {
     console.log('dislikeOpacity state has changed.')
   }
 }
источник

AM

Aga Mahmudov in Frontend_ru
говорит state has changed
источник

AM

Aga Mahmudov in Frontend_ru
Ща, чувствую вот-вот и заработает))
источник

AM

Aga Mahmudov in Frontend_ru
А что в componentDidUpdate надо класть? this.forceUpdate? Он вроде констатирует что обновилось, но renderCard всё также однажды рендерится
источник

IN

Igor N in Frontend_ru
Aga Mahmudov
А что в componentDidUpdate надо класть? this.forceUpdate? Он вроде констатирует что обновилось, но renderCard всё также однажды рендерится
пропс, из-за которого будет перерендер
источник

IH

Ilya Human in Frontend_ru
А в чем задача то ? Просто перерендерить чайлд компонента ?
источник

AM

Aga Mahmudov in Frontend_ru
Ilya Human
А в чем задача то ? Просто перерендерить чайлд компонента ?
+, обновить opacity у кнопки
источник

AM

Aga Mahmudov in Frontend_ru
Он топорно рендерится один раз и не реагирует на смену стейта
источник

IH

Ilya Human in Frontend_ru
Так если у чайлд передаётся пропс со стейта, то когда стейт меняется зависимые компоненты сами делают ререндер же
источник

AM

Aga Mahmudov in Frontend_ru
Ilya Human
Так если у чайлд передаётся пропс со стейта, то когда стейт меняется зависимые компоненты сами делают ререндер же
<Swiper … renderCard={(card, index) => this.renderCard({ card, index, dislikeOpacity: this.state.dislikeOpacity })} />
источник

AM

Aga Mahmudov in Frontend_ru
Пробовал даже так, фактически чайлд использует dislikeOpacity из аргумента, грубо говоря пропса, но даже так он не реагирует на смену стейта. Пробовал и напрямую this.state.dislikeOpacity указать у кнопки, но результат идентичный
источник

IH

Ilya Human in Frontend_ru
А как ты стейт обновляешь ?
источник

AM

Aga Mahmudov in Frontend_ru
this.setState({…
источник

AM

Aga Mahmudov in Frontend_ru
Складывается ощущение, что надо вытащить card в отдельный компонент и использовать props’ы, но это крайне тяжко из-за кучи связей и функций связанных
источник

IH

Ilya Human in Frontend_ru
Мб у тебя где-то что-то быстрее обновляется ? setState асинхронная же
источник

IN

Igor N in Frontend_ru
То есть, card у тебя внутри компонента. Покажи в песочнице логику всю
источник

AM

Aga Mahmudov in Frontend_ru
Ilya Human
Мб у тебя где-то что-то быстрее обновляется ? setState асинхронная же
Звучит маловероятно, странно как-то тогда получается
источник

IH

Ilya Human in Frontend_ru
Aga Mahmudov
this.setState({…
Я не видел твоей логики, но попробуй обновлять через setState(prevState => return {newState})
источник