Я все еще встречаюсь с React и реагирующим маршрутизатором, но мне интересно, как использовать on-router просто обновить состояние приложения без повторного рендеринга узлов DOM.Как я могу использовать реакцию-маршрутизатор для запуска изменений состояния?
Например, предположим, что у меня есть:
<Router history={browserHistory}>
<Route path="/" component={App}>
<IndexRoute screen="main" />
<Route path="settings" screen="sync" />
<Route path="overview" screen="overview" />
</Route>
</Router>
Я хотел бы повторно использовать реагировать-маршрутизатора согласования, но просто обновить текущий экран компонента приложения.
Причина в том, что в приведенном выше примере у меня есть три экрана, расположенных горизонтально только с одним видимым за раз. При изменении маршрута я хочу анимировать на соответствующем экране. Если я это сделаю, назначив компонент для каждого маршрута, реактивный маршрутизатор не отобразит другие экраны до тех пор, пока маршрут не будет соответствовать, и появится заметное отставание для перехода экрана.
Однако, если я сохраню все три экранов в DOM и просто переключать состояние, чтобы запускать переходы CSS, нет задержки (так как при правильном использовании will-change
браузер может предварительно визуализировать слой вне экрана).
Я пробовал полдюжины способов достижения этого, но они все очень хаки или связаны с дублированием соответствующего кода. Что я делаю не так?
Кроме того, я хотел бы избежать добавления чего-то вроде Redux, чтобы исправить это, если это возможно.
Спасибо! Я никогда не думал о параметризации экрана на верхнем уровне. Я также рассмотрю вопрос о том, должен ли он быть включен. Спасибо огромное! – brianskold
Спасибо от меня тоже :) ... с этой разницей, что я использую «componentDidUpdate» ... но цель достигается благодаря вам;) –