У меня есть компонент App, который запустил другой компонент Login и теперь я хочу завершить работу компонента Login и вернуться к работе App. Как это сделать ?
Думаю придется перелопатить код как вы говорите под роутинг. Надеялся что есть какая-нибудь функция для прекращения работы компонента. Подожду ответа Robur может он посоветует что-то похожее.
pink2floyd, вы находитесь не только в Login, но еще и "в" том компоненте который рендерит Login.
вам надо что-то поменять чтобы он перестал это делать. Что поменять - вариантов масса.
например в стейте заведите переменную showLogin и ставьте ее в true когда надо показать и false когда надо скрыть окно логина, и в зависимости от этой переменной либо рендерите login либо нет.
Можно и роутинг, как вам ниже сказали.
Robur, ну вот смотрите я открыл по условию страницу Login там ввел данные, как мне сказать компоненту App что пора менять рендер, ведь я нахожусь в компоненте Login и не могу менять state родительского компонента ?
Например - чтобы поменять стейт родительского компонента - передайте в login колбек, который будет вызван когда надо логин скрыть (вы залогинились или нажали на крестик или еще что) в этом колбеке уже делаете setState() в родительском компоненте.
С роутингом все еще проще - вы просто в login делаете history.pusр() на какую-то другую страницу, на что у вас в соответствующем месте происходит рендеринг, роут с Login не рендерится (и соответственно удаляется), а какой-то другой компонент рендерится вместо него.
Но я бы советовал сначала сделать без него, для лучшего понимания как оно вообще все в реакте работает.