web-dev-qa-db-ja.com

ビッグカレンダーの反応イベントの色を変更する

イベント付きのカレンダーを作成する必要があり、 react-big-calendar を使用することにしました。しかし、私は異なる色のイベントを作る必要があります。したがって、各イベントにはいくつかのカテゴリがあり、各カテゴリには対応する色があります。リアクションでイベントの色を変更するにはどうすればよいですか? react-big-calendar same color example

結果は次のようになります react-big-calendar different colors example

19
Max Zavernutiy

申し訳ありませんが、ドキュメントをよく読んでいません。これは、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>
    );
}
49
Max Zavernutiy

さまざまな種類のイベントのスタイルを設定する方法に関する追加のヒント:イベントオブジェクトの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
      };
    }
  }
/>
9
Oucam