Проблема:Реагировать маршрутизатор повторно оказывать тот же компонент
Есть асинхронной маршрут, получить из параметров movie
из него и возврата Movie Container
(компонент). Проблема в том, что я перехожу от одного MovieContainer
к другому MovieContainer
(только тот же маршрут, но с параметрами diff) мой маршрутизатор размонтирует и повторно обрабатывает MovieContainer
компонент. Но он должен просто передать новые реквизиты и не трогать мой жизненный цикл компонентов. Как его решить? Что я делаю неправильно?
Код:
маршрутизатор
<Route path="/" component={AppLayout}>
<IndexRoute components={{ children: Home }} />
<Route path=":movie/about" getComponents={(nextState, callback) => {
window.scrollTo(0, 0);
const movie = findMovie(nextState.params.movie);
return callback(null, { children: (router) => <Movie movie={movie} router={router} /> });
}}/>
....
</Route>
Компонент WillMount в компоненте Movie
componentWillMount() {
console.log('MOUNT MovieContainer');
}
UPDATE: ОК, Готово некоторый эксперимент.
Заменить
return callback(null, { children: (router) => <Movie movie={movie} router={router} /> });
С
return callback(null, Movie);
ANDD Movie component
повторно не renderd. Просто обновлено. Здорово! Но как передать реквизит сейчас?
Это правильно и желательное поведение. Новые маршруты должны повторно монтировать все компоненты. –
@ AndyRay, но это не новый маршрут, просто '/ movie1/about' to'/movie2/about' Этот шаблон маршрута '/: someparams' создан только для передачи новых реквизитов на один и тот же компонент. Итак, почему он должен переделать? –
Это абсолютно новый маршрут. –