Вы должны использовать какую-нибудь библиотеку управления состоянием
Мой первый совет - использовать Redux, поскольку библиотека очень хорошо справляется с подобными ситуациями.Вы хотите передать некоторые данные между несвязанными компонентами.Иметь объект состояния здесь очень хорошо.
Второй (более простой / быстрый) вариант - добавить некоторое управление состоянием в родительский компонент (это называется контейнером).Вы можете передать определенное состояние каждому из детей, а также функцию установки, которую вы можете запустить из дочернего процесса.
Пример компонента приложения в качестве контейнера
import React, { Component } from "react";
import autobind from 'autobind-decorator';
import { Route, Link, Switch, Redirect } from "react-router-dom";
import Agenda from "./Agenda";
import Planning from "./Planning";
class App extends Component {
state = {selectedDate: Date.now()}
@autobind
setActiveDate (dateToSet) {
this.setState({selectedDat: dateToSet});
}
/*---------------------------------------------------- Rendu -----------------------------------------------------------------*/
render() {
return (
<div>
<Switch>
<Route exact path="/" render={(props) => <Agenda {...props} setActiveDate={setActiveDate} selectedDate={this.state.selectedDate} />} />
<Route exact path="/planning" render={(props) => <Planning {...props} selectedDate={this.state.selectedDate} />}/>
</Switch>
</div>
);
}
}
export default App;
Некоторые замечания, которые стоит отметить
- Прежде всего вы не хотите, чтобы ваш основной компонент приложения использовался какконтейнер таким образом, поэтому, пожалуйста, создайте другой компонент для управления этим состоянием
- Использование декоратора
autobind
состоит в том, чтобы упростить написание, вы можете связать свою функцию в конструкторе, если хотите вместо этого - Этот компонент показывает только половину истории, другая половина находится в ваших дочерних компонентах, вам необходимо прочитать дату отсюда, а также вызвать функцию
setActiveDate
из дочернего элемента (Повестка дня)
Заключение
Этот метод будет загрязнять ваши компоненты намного больше, чем реализация с избыточностью.Но это быстрее, чем полная настройка притока.Просто попробуйте вспомнить «Принцип единой ответственности» .