javascript - vue-full-calendar '无法设置属性'isRendering'为空
问题描述
我安装了 vue-full-calendar,它是在我的应用程序中实现它的插件,但我收到以下错误:
Uncaught TypeError: Cannot set property 'isRendering' of null
我正在使用这个框架 https://github.com/skrypt-nl/laravel-vue-tailwind-spa
应用程序.js
import { Calendar } from '@fullcalendar/core'
import FullCalendar from 'vue-full-calendar'
...
Vue.use(Calendar)
Vue.use(FullCalendar)
...
Vue.component('calendar-component', require('./components/CalendarComponent.vue').default)
const app = new Vue({
el: '#app'
})
/* eslint-disable no-new */
new Vue({
i18n,
store,
router,
...App
})
这是我的 CalendarComponent.vue
<template>
<div class="container">
<full-calendar
:events="calendarEvents"
:options="calendarOptions"
:header="{
left: 'prev, next, today',
center: 'title',
right: 'dayGridMonth, timeGridWeek, timeGridDay, listWeek',
}"
/>
</div>
</template>
<script>
import dayGridPlugin from '@fullcalendar/daygrid'
import interactionPlugin from '@fullcalendar/interaction'
export default {
data () {
return {
calendarEvents: [{
events (start, end, timezone, callback) {
self.$http.get('/show-events').then(res => {
callback(res.data.eventList)
})
},
color: 'blue',
textColor: 'white'
}],
calendarOptions: {
plugins: [ dayGridPlugin, interactionPlugin ],
initialView: 'dayGridMonth'
}
}
}
}
</script>
该错误是指来自 fullcalendar 包的文件:
/*!
FullCalendar v5.5.1
Docs & License: https://fullcalendar.io/
(c) 2020 Adam Shaw
*/
import './vdom.js';
import { __extends, __assign } from 'tslib';
import { render, createElement, CalendarRoot, CustomContentRenderContext, CalendarContent, unmountComponentAtNode, flushToDom, DelayedRunner, CalendarDataManager, isArraysEqual, applyStyleProp, CalendarApi } from '@fullcalendar/common';
export * from '@fullcalendar/common';
var Calendar = /** @class */ (function (_super) {
__extends(Calendar, _super);
function Calendar(el, optionOverrides) {
if (optionOverrides === void 0) { optionOverrides = {}; }
var _this = _super.call(this) || this;
_this.isRendering = false; // the line it is referring to
_this.isRendered = false;
_this.currentClassNames = [];
_this.customContentRenderId = 0; // will affect custom generated classNames?
_this.handleAction = function (action) {
// actions we know we want to render immediately
switch (action.type) {
case 'SET_EVENT_DRAG':
case 'SET_EVENT_RESIZE':
_this.renderRunner.tryDrain();
}
};
_this.handleData = function (data) {
_this.currentData = data;
_this.renderRunner.request(data.calendarOptions.rerenderDelay);
};
_this.handleRenderRequest = function () {
if (_this.isRendering) {
_this.isRendered = true;
var currentData_1 = _this.currentData;
render(createElement(CalendarRoot, { options: currentData_1.calendarOptions, theme: currentData_1.theme, emitter: currentData_1.emitter }, function (classNames, height, isHeightAuto, forPrint) {
_this.setClassNames(classNames);
_this.setHeight(height);
return (createElement(CustomContentRenderContext.Provider, { value: _this.customContentRenderId },
createElement(CalendarContent, __assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData_1))));
}), _this.el);
}
else if (_this.isRendered) {
_this.isRendered = false;
unmountComponentAtNode(_this.el);
_this.setClassNames([]);
_this.setHeight('');
}
flushToDom();
};
_this.el = el;
_this.renderRunner = new DelayedRunner(_this.handleRenderRequest);
new CalendarDataManager({
optionOverrides: optionOverrides,
calendarApi: _this,
onAction: _this.handleAction,
onData: _this.handleData,
});
return _this;
}
Object.defineProperty(Calendar.prototype, "view", {
get: function () { return this.currentData.viewApi; } // for public API
,
enumerable: false,
configurable: true
});
Calendar.prototype.render = function () {
var wasRendering = this.isRendering;
if (!wasRendering) {
this.isRendering = true;
}
else {
this.customContentRenderId += 1;
}
this.renderRunner.request();
if (wasRendering) {
this.updateSize();
}
};
Calendar.prototype.destroy = function () {
if (this.isRendering) {
this.isRendering = false;
this.renderRunner.request();
}
};
Calendar.prototype.updateSize = function () {
_super.prototype.updateSize.call(this);
flushToDom();
};
Calendar.prototype.batchRendering = function (func) {
this.renderRunner.pause('batchRendering');
func();
this.renderRunner.resume('batchRendering');
};
Calendar.prototype.pauseRendering = function () {
this.renderRunner.pause('pauseRendering');
};
Calendar.prototype.resumeRendering = function () {
this.renderRunner.resume('pauseRendering', true);
};
Calendar.prototype.resetOptions = function (optionOverrides, append) {
this.currentDataManager.resetOptions(optionOverrides, append);
};
Calendar.prototype.setClassNames = function (classNames) {
if (!isArraysEqual(classNames, this.currentClassNames)) {
var classList = this.el.classList;
for (var _i = 0, _a = this.currentClassNames; _i < _a.length; _i++) {
var className = _a[_i];
classList.remove(className);
}
for (var _b = 0, classNames_1 = classNames; _b < classNames_1.length; _b++) {
var className = classNames_1[_b];
classList.add(className);
}
this.currentClassNames = classNames;
}
};
Calendar.prototype.setHeight = function (height) {
applyStyleProp(this.el, 'height', height);
};
return Calendar;
}(CalendarApi));
export { Calendar };
//# sourceMappingURL=main.js.map
在我看来,包裹似乎有问题。这是软件包的错误还是我安装了不正确的东西?
解决方案
推荐阅读
- r - 向量中仅某些元素的 N 次排列
- python - 如何从 Git 子模块中正确导入 PyInstaller 构建的应用程序?
- java - 映射和管理实体的问题,Hibernate
- php - 从 php 中的大 json 文件中读取大数组
- python-3.x - 共享服务帐户密钥是使用 Google 表格在工作组之间共享数据的可行方法吗?有没有更好的办法?
- javascript - 确保在 API 中的任何函数之前调用启动/初始化函数
- firebase - 我如何添加加载圆形图标,因为从 Firestore 获取数据需要时间?
- ansible - 读取所有变量和事实并将它们设置为 linux 环境变量
- unix - awk hack 根据计数进行破解
- sql - 有没有办法在 SQL (BigQuery) 上加入两个查询