Я решил свою проблему, с помощью ** см. Резче ** и спасибо поддержки и голосов.
Теперь вернемся к моей проблеме. Мой календарь изначально загружался правильно, но когда я меняю месяц и год в компоненте MonthName (то есть дочернем компоненте), переходите к DayPickerMonths (т.е. родительскому компоненту), а затем до компонента Calendar (т.е. родительского компонента), затем до компонента DatePickerDays (т.е. дочернего) компонент для календаря и брат для DayPickerMonths)
Визуально выглядит так ![enter image description here](https://i.stack.imgur.com/IlCao.png)
Итак, начните с дочернего элемента (т. е. MonthName)
функция
private showDays = (monthNo: number) => {
this.props.changeMonthComponent(monthNo)
}
вызов в рендере
public render() {
let monthshortname = this.monthshort.map((month, monthNo) => {
return <span key={monthNo} onClick={() => this.showDays(monthNo)}>{month}</span>;
});
return monthshortname
}
DayPickerMonths (т.е. Parent)
<MonthNames changeMonthComponent={(monthNo) => this.showDays(monthNo, this.state.dateObject.year())} />
private showDays = (monthNo: number, year: number) => {
this.props.changeMonthComponent(showComponent.Days, monthNo, year)
}
Календарь (т. Е. Дедушка)
<DatePickerMonths
changeMonthComponent={(childData, monthNo, year) => this.changeMonthComponent(childData, monthNo, year)} />
private changeMonthComponent = (childData: showComponent, monthNo: number, year: number) => {
this.setState({ showComponent: childData, monthNo: monthNo, year: year })
}
DayPickerDays (т. Е. Дочерний элемент для календаря и брат для DayPicker)
private showMonths = () => {
this.props.changeComponent(showComponent.Months)
}
public componentDidMount() {
this.setState({ dateObject: this.state.dateObject.month(this.props.monthNo).year(this.props.year) })
}
У меня есть обновите мой для этого здесь https://stackblitz.com/edit/react-ts-z2278r
Но все же есть проблема, что , когда год является изменением в компоненте DayPickerDays, это не отражало в DayPickerMonths и обременительны для передачи данных, мы должны se Реагирует на контекст , чтобы сделать его глобальным и простым. Я скоро обновлю этот ответ, как только сделаю провайдера, так как мне нужно go на прием к врачу для проверки моих глаз