我有两个日历,例如议程,有一个图标日历按钮,当我点击它时,它将被重定向到另一个日历(Planning)
,这些日历是用react-big-calendar开发的,我想在导航时例如在一周的juin 17 - 23
议程,我点击图标日历,它将被重定向到juin 17 - 23
计划。
我的代码是:https ://codesandbox.io/s/m7k904y3o8
我尝试用 发送日期getWeek()
,但它不起作用。
我该如何解决?
我有两个日历,例如议程,有一个图标日历按钮,当我点击它时,它将被重定向到另一个日历(Planning)
,这些日历是用react-big-calendar开发的,我想在导航时例如在一周的juin 17 - 23
议程,我点击图标日历,它将被重定向到juin 17 - 23
计划。
我的代码是:https ://codesandbox.io/s/m7k904y3o8
我尝试用 发送日期getWeek()
,但它不起作用。
我该如何解决?
我的第一个建议是使用 Redux,因为该库可以很好地处理此类情况。您想在不相关的组件之间传递一些数据。在这里拥有一个状态对象会很好地为您服务。
第二个(更容易/更快)选项是将一些状态管理添加到父组件(这称为容器)。您可以将一些状态传递给每个孩子以及您可以从孩子触发的 setter 函数。
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
(议程)这种方法比 redux 实现更会污染你的组件。但它比完整的 redux 设置更快。试着记住“单一责任主体”。
您可以添加其他数据,然后这些数据将在组件的propthis.props.history.push
中可用。例如,如果您想查看 1995 年 12 月 20 日的那一周:location
Planning
// Agenda.js: Routing to "/planning"
this.props.history.push("/planning", { date: new Date(1994, 11, 19, 0, 0)})
// Planning.js
constructor(props) {
super(props); //Important
this.state({
/* ... */
dateWeek: this.props.location.state && this.props.location.state.date
});
}
// Following is a fix or else you would not get next/previous week.
getThisWeek = (dateWeek) => {
this.setState({ dateWeek });
}
我推荐的另外两个解决方案是URL parameters和Query parameters。