我试图利用这个例子来创建一个列出当月事件的日历,我有这部分工作,但我还没有弄清楚如何制作它以便用户可以点击事件名称,它会将他们带到该事件页面。
因此,根据该示例,如果他们单击其中一个生日,则会将他们带到一个活动页面,在那里他们可以看到有关该生日的更多信息。
目前,我的活动页面正在使用此功能呈现:
renderEvents() {
const {events} = this.state
this.state.events = {};
let eventItems = this.state.eventGet.map(event => {
console.log(event.id)
if(typeof(events[moment(event.date).date()]) !== "undefined") {
events[moment(event.date).date()].push(event.name)
} else {
events[moment(event.date).date()] = [event.name]
}
});
function renderDay(day) {
const date = day.getDate();
const dateStyle = {
position: 'absolute',
color: 'lightgray',
bottom: 0,
right: 0,
fontSize: 20,
};
const containerStyle = {
margin:'2px',
border: '1px solid #3a87ad',
borderRadius: '3px',
position: 'relative',
display: 'block',
cursor: 'pointer'
};
const textStyle = {
fontSize: '0.8em',
textAlign: 'left',
margin: '1.5px',
}
const cellStyle = {
height: 150,
width: 160,
position: 'relative',
};
return (
<div style={cellStyle}>
<div style={dateStyle}>{date}</div>
{events[date] &&
events[date].map((name, i) => (
<div onClick={() => this.props.history.push('/organizations/' + this.props.match.params.orgID + '/events' + i)} key={i} style={containerStyle}>
<div style={textStyle}> {name} </div>
</div>
))}
</div>
);
}
return (
<div>
<Grid component="section" className="section--center" shadow={0} noSpacing>
<Cell col={12}>
<FABButton style={{margin: '10px', float: "right"}} colored ripple onClick={() => this.props.history.push('/organizations/' + this.props.match.params.orgID + '/events')}>
<Icon name="add" />
</FABButton>
</Cell>
<DayPicker
canChangeMonth={true}
className="Birthdays"
renderDay={renderDay}
/>
</Grid>
</div>
);
}
当前的问题在子函数中,renderDay
该子函数由获取与当天相关联的事件的 DayPicker 组件调用。当我尝试推送到历史属性时,它会出错并说我无法从未定义中读取属性“历史”,这是有道理的,因为我们没有将历史属性传递给该函数。
有人可以帮我弄清楚如何修改该子功能,以便 div 上的 onClick 事件将用户带到该事件页面吗?