当前位置: 首页 > 知识库问答 >
问题:

React Full日历v4工具提示

鲁华皓
2023-03-14

完整日历组件

import FullCalendar from "@fullcalendar/react";
import timeGrid from "@fullcalendar/resource-timegrid";
import resourceDayGridPlugin from '@fullcalendar/resource-daygrid';

class FC extends React.Component {
  calendarComponentRef = React.createRef();

  constructor(props) {
    super(props);    
    this.state = {
        events:[{ "id": 1, "title": "event 1", "description":"some description"},......]
    }  
  }

  eventRender(info){
    var tooltip = new Tooltip(info.el, {
      title: info.event.extendedProps.description,
      placement: 'top',
      trigger: 'hover',
      container: 'body'
    });
  }

  render() {
    return <FullCalendar                  
          events={this.state.getEvents}          
          defaultView="resourceTimeGridDay"
      plugins={[timeGrid, interactionPlugin, resourceDayGridPlugin]}
          eventRender={this.eventRender}
          schedulerLicenseKey="GPL-My-Project-Is-Open-Source"
        />

  }
}

标题中包含Tooltip.js

<script src="https://unpkg.com/popper.js/dist/umd/popper.min.js"></script>
<script rc="https://unpkg.com/tooltip.js/dist/umd/tooltip.min.js">/script>

正在尝试在react中创建此演示,但在react版本中不起作用。

但是工具提示不起作用

全日历反应示例项目示例项目反应全日历

共有3个答案

翟学文
2023-03-14

使用tippy与eventMouseEnter的工具提示

    handleMouseEnter = (arg) =>{
    tippy(arg.el, {
        content: "my tooltip!"
    });
}

组件

render() {
    return (
            <FullCalendar ref={this.calendarRef}
                          plugins={[dayGridPlugin, interactionPlugin]}
                          initialView="dayGridMonth"
                          weekends={true}
                          eventMouseEnter={this.handleMouseEnter}

            />
    )
}
景成和
2023-03-14

使用工具提示的工具提示。js

eventRender(info){
    var tooltip = new Tooltip(info.el, {
      title: info.event.extendedProps.description,
      placement: 'top',
      trigger: 'hover',
      container: 'body'
    });
  }

在组件中:

render() {
    return <FullCalendar                  
          events={this.state.getEvents}          
          defaultView="resourceTimeGridDay"
      plugins={[timeGrid, interactionPlugin, resourceDayGridPlugin]}
          eventRender={this.eventRender}
          schedulerLicenseKey="GPL-My-Project-Is-Open-Source"
        />

  }

使用反应工具提示

import ReactTooltip from 'react-tooltip'

和方法来处理eventPosition

handleEventPositioned(info) {
  info.el.setAttribute("data-tip","some text tip");
   ReactTooltip.rebuild();
 }

render() {
        return <FullCalendar                  
              events={this.state.getEvents}          
              defaultView="resourceTimeGridDay"
          plugins={[timeGrid, interactionPlugin, resourceDayGridPlugin]}
              eventPositioned={this.handleEventPositioned}
              schedulerLicenseKey="GPL-My-Project-Is-Open-Source"
            />

      }
滑令
2023-03-14

使用内容注入钩子(例如,用于Mature-ui工具提示):

eventContent: ( arg ) => {
    return (
        <Tooltip title={ <Typography color="inherit">Tooltip with HTML</Typography> } arrow>
            { renderInnerContent( arg ) }
        </Tooltip>
    );
}

如果您想拥有与默认值完全相同的内容,请从全日历源复制该函数:

/**
 * https://github.com/fullcalendar/fullcalendar/blob/495d925436e533db2fd591e09a0c887adca77053/packages/common/src/common/StandardEvent.tsx#L79
 */
function renderInnerContent( innerProps ) {
    return (
        <div className='fc-event-main-frame'>
            { innerProps.timeText &&
            <div className='fc-event-time'>{ innerProps.timeText }</div>
            }
            <div className='fc-event-title-container'>
                <div className='fc-event-title fc-sticky'>
                    { innerProps.event.title || <Fragment>&nbsp;</Fragment> }
                </div>
            </div>
        </div>
    );
}

要区分ListView内容和默认内容,您可以使用此代码(给定日历参考calendarRef):

eventContent: ( arg ) => {
    const data = calendarRef.current.getApi().getCurrentData();
    const viewSpec = data.viewSpecs[arg.view.type];
    let innerContent;
    if (viewSpec.component === ListView) {
        /**
         * https://github.com/fullcalendar/fullcalendar/blob/495d925436e533db2fd591e09a0c887adca77053/packages/list/src/ListViewEventRow.tsx#L55
         */
        innerContent = renderListInnerContent( arg );
    } else {
        innerContent = renderInnerContent( arg );
    }
    return ( <Tooltip ... >{ innerContent }</Tooltip>);
};
 类似资料:
  • 我正在尝试向fullcalendar添加工具提示。我使用角度2模块(ap-angular2-fullcalendar)。工具提示需要以编程方式创建,以便工具提示内容与事件内容匹配(例如:描述)。 我试图使用qchat和材料MatToolTip库,但没有成功(我设法将工具提示添加到DOM,但它不起作用)。

  • 我在我的php站点中使用fullcalendar。我用eventSources加载事件,给它一个url重定向到我的php控制器,该控制器生成json数据。在呈现日历之前,我希望每个事件都有工具提示。为此,我编写了一个javascript函数,用于添加工具提示: 其中内容是html内容。该函数在日历渲染之后运行。呈现日历后,工具提示不显示。 为了解决这个问题,我尝试将该函数添加到datesRende

  • 我正在从Priming设置fullcalendar事件的工具提示。当我运行代码时,我会在web控制台中看到初始化的工具提示,但当我将鼠标放在事件上时,我看不到它。 我正在用Typescript开发,Priming 7.0。5,6。我正在使用fullcalendar v4。0,我遵循eventRender页面中的工具提示示例。 有我的代码: 贷款组成部分ts 贷款组成部分html 将结果输入我的控制

  • 我试图向fullcalendar scheduler 5.8添加工具提示,但未能实现此功能。 在fullcalendar调度程序模板中,我添加了“工具提示”和“popper”库以及CSS,它们可以处理简单的fullcalendar,但没有结果。我的模板起点是https://fullcalendar.io/docs/event-tooltip-demo 工具提示模板示例图像 在Javascript代

  • 我想在Adam Shaw的完整日历中显示事件的引导工具提示。我尝试了以下代码: 但它不起作用。这里怎么了?

  • 我真的很喜欢这个CSS工具提示的解决方案,我自己也用过一段时间了。但是我遇到了一个我以前从未遇到过的问题,多个工具提示的内容相互重叠,我不确定如何最好地解决它。 提到的解决方案基于管理绝对定位工具提示内容的