У меня есть сценарий использования, в котором я хочу, чтобы на некоторых страницах отображалось <DefaultAppBar />
, а на некоторых страницах, таких как «Настройки» и «Редактировать профиль», - <EditableAppBar />
(где одна является главной панелью приложения, а другая отображаетЗначок «X» и значок галочки для сохранения изменений)
ЦЕЛЬ - сделать это масштабируемым для команды разработчиков. В идеале , все, что им нужно сделать, это создать новый маршрут, использовать опору рендеринга на маршруте и передать действие Redux, которое изменяет часть глобального состояния.Компонент <AppShell />
затем проверяет этот фрагмент состояния и отображает соответствующий компонент панели приложения.Я хотел бы избежать необходимости копаться в каталоге (который уже довольно большой) и вызывать действие из метода componentWillMount ().
Временное решение состоит в том, чтобы написать мои маршруты следующим образом: (this.props.cantEdit
- это передаточное действие, переданное константой, установленной в true
или false
<Route
exact
path={profile}
render={props =>
<Profile candEdit={this.props.canEdit(editFalse)} {...props} />}
/>
<Route
path={settings}
render={props =>
<UserSettings canEdit={this.props.canEdit(editTrue)} {...props} />}
/>
Я знаю, что это не самое лучшее - передача функции CALL в качестве подпорки. Но сейчасон работает и не вызывает никаких проблем. Что-то в этом роде было бы замечательно, поскольку действие по сути вызывается Route. Опять же, идея состоит в том, что все, что нужно сделать разработчику, это написать новый маршрут, передающий действие и переменную, иправильный компонент панели приложения отображается без необходимости копаться в конкретном файле компонента для написания метода.
Любые советы / рекомендации / различные подходы приветствуются!