Я использую реагирующий маршрутизатор (v.4.3.1) для рендеринга основной части моего приложения, и у меня есть ящик слева с меню.Когда в заголовке приложения переключается кнопка, я изменяю состояние свернутой переменной, чтобы компоненты соответствующим образом повторно отображали CSS.Моя проблема в том, что эта переменная должна быть сохранена на компоненте, отображающем все мои Route
, и когда компонент обновляется, Route
отключается и монтирует его компонент.
Я уже пытался предоставить key
к моему Route
, но он не работает.
Мой код выглядит следующим образом, и обновляется родительский элемент этого компонента, который повторно отображает мой Main
компонент:
class Main extends Component {
constructor(props) {
super(props);
this.observer = ReactObserver();
}
getLayoutStyle = () => {
const { isMobile, collapsed } = this.props;
if (!isMobile) {
return {
paddingLeft: collapsed ? '80px' : '256px',
};
}
return null;
};
render() {
const RouteWithProps = (({index, path, exact, strict, component: Component, location, ...rest}) =>
<Route path={path}
exact={exact}
strict={strict}
location={location}
render={(props) => <Component key={"route-" + index} observer={this.observer} {...props} {...rest} />}/>
);
return (
<Fragment>
<TopHeader observer={this.observer} {...this.props}/>
<Content className='content' style={{...this.getLayoutStyle()}}>
<main style={{margin: '-16px -16px 0px'}}>
<Switch>
{Object.values(ROUTES).map((route, index) => (
<RouteWithProps {...route} index={index}/>
))}
</Switch>
</main>
</Content>
</Fragment>
);
}
}
Я бы хотел, чтобы маршрут только обновлял, а не размонтировал компонент.это возможно?