Я использую реактивную навигацию для своего мобильного приложения, и у меня есть 2 маршрута: «Домой» и «Избранное», где «Домой» является начальным маршрутом. Оба этих компонента имеют компонентDidMount. Всякий раз, когда я перехожу в Favoriti из Дома, компонент Favoriti монтируется, но когда я возвращаюсь в Дом, его компонентDidMount не выполняется. Он выполняется только при первом открытии приложения, но мне нужно, чтобы оно монтировалось каждый раз, когда я к нему перехожу.
import { createStackNavigator, createAppContainer} from 'react-navigation';
import Home from './views/Home';
import Favoriti from './views/Favoriti';
const MainNavigator = createStackNavigator({
FavoritiRT: Favoriti,
HomeRT: Home
},
{
initialRouteName: "HomeRT"
}
);
const MyRoutes = createAppContainer(MainNavigator);
export default MyRoutes;
Ошибка не отображается, просто компонентDidMount начального маршрута не выполняется каждый раз, когда я перехожу к нему, но с другими маршрутами он выполняется.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


"componentDidMount" больше не запускается, потому что компонент "Home" уже создан и будет существовать до тех пор, пока он находится в стеке. Этот экземпляр компонента Home будет использоваться повторно, и пользователь продолжит работу с того места, на котором остановился, когда вернется к этому компоненту Home. Чтобы снова запустить componentDidMount, вам нужно запустить новый экземпляр компонента Home.
Вместо использования кнопки «Назад». Создайте кнопку и в свойстве onPress перейдите к новому экземпляру Home, используя метод push.
<Button
title = "Home"
onPress = {() => this.props.navigation.push('Home')}
/>
https://reactnavigation.org/docs/en/navigating.html#going-back
Редактировать:
Пока это запустит ваше приложение; sfratini делает хорошее замечание, и его ответ будет лучше для вас, если вы в конечном итоге будете работать на компанию / клиента или опубликуете собственное приложение. Добавление слушателя было бы идеальным по всем причинам, которые он сказал.
Ответ Рэймонда должен работать, и объяснение такое же. ComponentDidMount запускается только один раз, и его не нужно запускать снова, так как у вас есть Home в стеке.
Я бы порекомендовал добавить слушателя в компонентWillReceiveProps, который также должен срабатывать, когда главный экран снова загружается, и вы можете увидеть, нужно ли вам обновить или перезагрузить экран.
Но, конечно, это зависит от вашего варианта использования. Если вы продолжаете помещать главный экран в стек, единственным недостатком является то, что как только пользователь достигает главного экрана, обычно кнопка «Назад» должна означать «выйти из приложения», и если вы поместите его в стек и нажмете «Назад», вы просто перейдете назад на один экран. Быть таким — плохой UX, но если это работает для вас, хорошо.
Спасибо за Ваш ответ. Я попытался добавить прослушиватель, но componentWillReceiveProps не срабатывал, когда я возвращался на главный экран. Использование замены вместо навигации сработало для меня.