Изменить ширину события в FullCalendar (React JS)

Мне нравится изменять ширину события в контексте React JS.

Подобные вопросы описаны здесь:

К сожалению, в цитируемых вопросах ничего не говорится о том, как решить эту проблему в среде реагирования.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
0
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я понял, как это сделать. eventRender больше не существует (v4), а вместо этого есть другие «перехватчики рендеринга событий» (v5):

Теперь, в зависимости от того, чего вы хотите достичь, в React JS есть два способа сделать это. (Примечание: я использовал TypeScript)

Применение изменения CSS ко всем событиям

Мы можем использовать styled, чтобы создать собственное определение .css для любого события и использовать его в качестве оболочки (StyleWrapper)

import React from 'react';
import FullCalendar from '@fullcalendar/react';
import timeGridPlugin from '@fullcalendar/timegrid';
import styled from '@emotion/styled';
export interface ISampleProps {}

//our Wrapper that will go around FullCalendar
export const StyleWrapper = styled.div`
    .fc-event {
        width: 98px !important;
    }
`;
//Reacct Functional Component
const Sample: React.FunctionComponent<ISampleProps> = (props) => {
    
    const events = [ 
       /*some events */  
    ];

    return (
        <>
            <div>
                <StyleWrapper>
                    <FullCalendar
                        plugins = {[timeGridPlugin]}
                        initialView = "timeGridWeek"
                        events = {events}
                    />
                </StyleWrapper>
            </div>
        </>
    );
};

export default Sample;

Применение определенного CSS к определенным событиям

Таким образом, вы можете точно сказать FullCalendar, как должно выглядеть событие, в зависимости от самоопределяемых реквизитов, которые вы добавляете к событию. Ваши самоопределяемые реквизиты будут добавлены в extendedProps, которые будут использоваться в нашем хуке рендеринга событий eventClassNames

//same imports from earlier (but you don't need "styled" for this one)
const Sample: React.FunctionComponent<ISampleProps> = (props) => {

     function eventAddStyle(arg: any) {
        //all self-created props are under "extendedProps"
        if (arg.event.extendedProps.demanding) {
            return ['maxLevel']; //maxLevel and lowLevel are two CSS classes defined in a .css file 
        } else {
            return ['lowLevel'];
        }
    }  

    const events = [ 
        {
            id: 'a',
            title: 'This is just an example',
            start: '2022-03-19T12:30:00',
            end: '2022-03-19T16:30:00',
            backgroundColor: '#74AAEB',
            demanding: true //our self-created props
        },
        {
            id: 'b',
            title: 'This is another example',
            start: '2022-03-17T08:00:00',
            end: '2022-03-17T11:30:00',
            demanding: false // our self-created props
        }, 
    ];
    return (
        <>
            <div>
                <FullCalendar
                    plugins = {[timeGridPlugin]}
                    initialView = "timeGridWeek"
                    eventClassNames = {eventAddStyle}
                    events = {events}
                />
            </div>
        </>
    );
};

export default Sample;

Другие вопросы по теме