#react-native #promise #setstate #react-lifecycle
#react-native #обещание #setstate #реагировать-жизненный цикл
Вопрос:
Я пытаюсь обработать обещание внутри componentDidMount, я хочу предотвратить бесконечный вызов promise, поэтому я хочу реализовать переменную isMounted, но я не совсем понимаю, когда для isMounted установить значение false, чтобы отменить вызов promise.
Моя идея состоит в том, чтобы установить для isMounted значение false внутри componentWillUnmount .
Итак, моя логика состоит в том, чтобы вызвать обещание, когда компонент смонтирован, и оставить обещание, когда компонент размонтирован :
async componentDidMount() {
if (isMounted) {
try {
await RegistrationService.getData();
} catch (error) {
console.log(error);
}
}
}
componentWillUnmount() {
isMounted = false;
}
Я буду благодарен, если кто-нибудь поможет мне понять эти моменты жизненного цикла и когда я должен остановить вызов promise
Ответ №1:
Я думаю, что лучшим подходом было бы сделать что-то вроде этого:
state = {
ready: false
}
async componentDidMount() {
if (ready === false) {
try {
await RegistrationService.getData();
this.setState({ ready: true });
} catch (error) {
console.log(error);
}
}
}
И что касается этого:
Я буду благодарен, если кто-нибудь поможет мне понять эти моменты жизненного цикла и когда я должен остановить вызов promise
Изучайте функциональные компоненты и используйте хуки!!
Это изменит вашу жизнь (ну, вашу «реактивную» жизнь …)
Комментарии:
1. проблема в том, что я работаю над проектом уже год, и все мои компоненты являются функциональными компонентами, я должен начать использовать функциональный компонент в следующем проекте. мой вопрос: как вы думаете, это хорошая идея, чтобы сделать обещание зависящим от значения состояния готовности?
2. ДА. В противном случае я бы этого не предлагал.
3. и я должен назвать this.state.ready вместо ready?
4. Правильно. Мой плохой. Я слишком привык к функциональным компонентам.