イベント付きのカレンダーを作成する必要があり、 react-big-calendar を使用することにしました。しかし、私は異なる色のイベントを作る必要があります。したがって、各イベントにはいくつかのカテゴリがあり、各カテゴリには対応する色があります。リアクションでイベントの色を変更するにはどうすればよいですか?
申し訳ありませんが、ドキュメントをよく読んでいません。これは、eventPropGetter
属性を使用して行うことができます。私はこのようにしました:
eventStyleGetter: function(event, start, end, isSelected) {
console.log(event);
var backgroundColor = '#' + event.hexColor;
var style = {
backgroundColor: backgroundColor,
borderRadius: '0px',
opacity: 0.8,
color: 'black',
border: '0px',
display: 'block'
};
return {
style: style
};
},
render: function () {
return (
<Layout active="plan" title="Planning">
<div className="content-app fixed-header">
<div className="app-body">
<div className="box">
<BigCalendar
events={this.events}
defaultDate={new Date()}
defaultView='week'
views={[]}
onSelectSlot={(this.slotSelected)}
onSelectEvent={(this.eventSelected)}
eventPropGetter={(this.eventStyleGetter)}
/>
</div>
</div>
</div>
</Layout>
);
}
さまざまな種類のイベントのスタイルを設定する方法に関する追加のヒント:イベントオブジェクトのmyEvents
配列で、各オブジェクトにブールプロパティisMine
を指定してから、次のように定義しました。
<BigCalendar
// other props here
eventPropGetter={
(event, start, end, isSelected) => {
let newStyle = {
backgroundColor: "lightgrey",
color: 'black',
borderRadius: "0px",
border: "none"
};
if (event.isMine){
newStyle.backgroundColor = "lightgreen"
}
return {
className: "",
style: newStyle
};
}
}
/>