如何使用 React js 在完整日历事件中附加元素以显示更多文本?

0 fullcalendar reactjs fullcalendar-4

我正在尝试将完整日历实施到我的 React JS 应用程序项目中。我想要做的不仅仅是显示标题,我还希望事件显示描述。

我看到一个以前问过的问题在 fullcalendar 中显示更多文本它有一个使用 jquery(第二个答案)的答案

$(document).ready(function() { 
    $('#calendar').fullCalendar({ 
        events: 
            [ 
                { 
                    id: 1, 
                    title: First Event', 
                    start: ......., 
                    end: ....., 
                    description: 'first description' 
                }, 
                { 
                    id: 2, 
                    title: 'Second Event', 
                    start: ......., 
                    end: ....., 
                    description: 'second description'
                }
            ], 
        eventRender: function(event, element) { 
            element.find('.fc-title').append("<br/>" + event.description); 
        } 
    });
} 
Run Code Online (Sandbox Code Playgroud)

我试图用我的代码内联改变它:

$(document).ready(function() { 
    $('#calendar').fullCalendar({ 
        events: 
            [ 
                { 
                    id: 1, 
                    title: First Event', 
                    start: ......., 
                    end: ....., 
                    description: 'first description' 
                }, 
                { 
                    id: 2, 
                    title: 'Second Event', 
                    start: ......., 
                    end: ....., 
                    description: 'second description'
                }
            ], 
        eventRender: function(event, element) { 
            element.find('.fc-title').append("<br/>" + event.description); 
        } 
    });
} 
Run Code Online (Sandbox Code Playgroud)

如果没有“eventRender”,日历就可以正常工作,但我只需要让那一点点工作,我可能错过了一些非常明显的东西,但我一直盯着并尝试不同的东西却一无所获。希望有人可以建议我如何做到这一点。

更新 根据您的回答,我已尝试过此操作,但这不起作用。你能提供进一步的帮助吗?我很感激。

class Calendar extends React.Component {

    render() {
        return (
            <div id="calendar" class="container" ref="calendar">
                <FullCalendar
                    selectable={true}
                    defaultView="dayGridMonth"
                    height={650}
                    aspectRatio={2}
                    plugins={[interaction, dayGridPlugin, bootstrapPlugin]}
                    themeSystem="bootstrap"
                    weekends={false}
                    displayEventTime={true}
                    timeZone="UTC"
                    events={[
                        { title: 'Early Bird Registration Deadline', description: 'asdasd', date: '2019-05-13' },
                        { title: 'event 2', description: 'asdasdasd', date: '2019-04-02' }
                    ]}
                    eventRender={this.EventDetail}                        
                />
            </div>
        )
    }
    EventDetail = ({ event, el }) => {
        const content = <div>{event.title}<div>{event.description}</div></div>;
        ReactDOM.render(content, el);
        return el;
      };
}
export default Calendar;
Run Code Online (Sandbox Code Playgroud)

Nis*_*hli 7

根据 FullCalendar v5 for React 的最新文档,您可以eventContent自定义事件的渲染。

<FullCalendar eventContent={renderEventContent} />

 const renderEventContent = (eventInfo) => {
     return (
            <>
              <b>{eventInfo.timeText}</b>
              <p><i>{eventInfo.event.title}</i></p>
            </>
     )
 };
Run Code Online (Sandbox Code Playgroud)


Mic*_*ael 5

您可以执行类似操作并将组件传递给 eventRender 道具。

import React from 'react';
import ReactDOM from 'react-dom';
import FullCalendar from '@fullcalendar/react';

const EventDetail = ({ event, el }) => {
  const content = <div>{event.title}<div>{event.description}</div></div>;
  ReactDOM.render(content, el);
  return el;
};

<FullCalendar eventRender={EventDetail} />
Run Code Online (Sandbox Code Playgroud)