Ofcourse. Прямо сейчас вы управляете компонентами без состояния как компоненты без состояния. Теперь создайте компонент с состоянием, чтобы сказать, когда будет отображаться Дом: (Я использовал реагирующие хуки, так как у вас уже есть компонент функции)
Используйте реквизиты рендеринга маршрута для передачи реквизитов в компонент, как это:
Вариант 1: Использовать реквизит рендеринга
const [needsHomeMenu, setNeedsHomeMenu] = useState(false); // you can use this.setState({needsHomeMenu: true}) to achieve.
.
.
.
<Toolbar displayHome={needsHomeMenu}/> //Toolbar depends on this state
.
.
// update state from within the component that propagates to Toolbar
<Route path="/category" render={() => (<CategoryPage doesNeedHome={setNeedsHomeMenu} />)} />
В CategoryPage.js , получить реквизит и примонтировать, doesNeedHome(true)
In HomePage.js , doesNeedHome(false)
. Теперь состояние изменяется и обновляется реквизит Панели инструментов, и дом исчезает.
Опция 2:
Используйте реквизиты маршрутизатора, чтобы выбрать местоположение пути вместо маршрутарендер в Варианте 1. В CategoryPage.js и HomePage.js , получить опору и при монтировании, doesNeedHome(this.props.location.pathname==='/')
или doesNeedHome(this.props.location.pathname==='/home')
Обновление состояния покоято же, что и выше.
Компонент необходимо соответствующим образом реорганизовать в файлах различий.