如何解决domAlign不是rc-tooltip
rc-tooltip以前可以正常工作,但是最近错误不断出现,其中工具提示不再呈现。错误是:
Uncaught TypeError: domAlign is not a function
查看堆栈跟踪之后,我进入了我的node_modules,并在/node_modules/rc-tooltip/lib/Popup.js
中找到了Popup.js文件,并注意到domAlign是必需的:
'use strict';
var _createClass = (function () { function defineProperties(target,props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target,descriptor.key,descriptor); } } return function (Constructor,protoProps,staticProps) { if (protoProps) defineProperties(Constructor.prototype,protoProps); if (staticProps) defineProperties(Constructor,staticProps); return Constructor; }; })();
var _get = function get(_x,_x2,_x3) { var _again = true; _function: while (_again) { var object = _x,property = _x2,receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object,property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
function _classCallCheck(instance,Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
function _inherits(subClass,superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function,not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype,{ constructor: { value: subClass,enumerable: false,writable: true,configurable: true } }); if (superClass) subClass.__proto__ = superClass; }
/**
* @author yiminghe@gmail.com
*/
var React = require('react');
var anim = require('css-animation');
var utils = require('./utils');
var domAlign = require('dom-align');
var Popup = (function (_React$Component) {
function Popup() {
_classCallCheck(this,Popup);
_get(Object.getPrototypeOf(Popup.prototype),'constructor',this).apply(this,arguments);
}
_inherits(Popup,_React$Component);
_createClass(Popup,[{
key: 'shouldComponentUpdate',// optimize for speed
value: function shouldComponentUpdate(nextProps) {
return this.props.visible || nextProps.visible;
}
},{
key: 'getPopupDomNode',value: function getPopupDomNode() {
return React.findDOMNode(this.refs.popup);
}
},{
key: 'alignRootNode',value: function alignRootNode(prevProps) {
var props = this.props;
if (props.visible && !prevProps.visible) {
var targetDomNode = React.findDOMNode(props.wrap).firstChild;
var popupDomNode = this.getPopupDomNode();
var placement = props.placement;
var points;
if (placement && placement.points) {
var originalClassName = utils.getToolTipClassByPlacement(props.prefixCls,placement);
var align = domAlign(popupDomNode,targetDomNode,placement);
var nextClassName = utils.getToolTipClassByPlacement(props.prefixCls,align);
if (nextClassName !== originalClassName) {
popupDomNode.className = popupDomNode.className.replace(originalClassName,nextClassName);
}
} else {
points = ['cr','cl'];
if (placement === 'right') {
points = ['cl','cr'];
} else if (placement === 'top') {
points = ['bc','tc'];
} else if (placement === 'bottom') {
points = ['tc','bc'];
}
domAlign(popupDomNode,{
points: points
});
}
}
}
},{
key: 'animateRootNode',value: function animateRootNode(prevProps) {
var props = this.props;
var transitionName = props.transitionName;
if (!transitionName && props.animation) {
transitionName = props.prefixCls + '-' + props.animation;
}
if (transitionName) {
var domNode = this.getPopupDomNode();
if (props.visible && !prevProps.visible) {
anim(domNode,transitionName + '-enter');
} else if (!props.visible && prevProps.visible) {
anim(domNode,transitionName + '-leave');
}
}
}
},{
key: 'componentDidUpdate',value: function componentDidUpdate(prevProps) {
prevProps = prevProps || {};
this.alignRootNode(prevProps);
this.animateRootNode(prevProps);
}
},{
key: 'componentDidMount',value: function componentDidMount() {
this.componentDidUpdate();
}
},{
key: 'render',value: function render() {
var props = this.props;
var className = utils.getToolTipClassByPlacement(props.prefixCls,props.placement);
if (props.className) {
className += ' ' + props.className;
}
var style = this.props.style;
if (!props.visible) {
className += ' ' + props.prefixCls + '-hidden';
}
var arrowClassName = props.prefixCls + '-arrow';
var innerClassname = props.prefixCls + '-inner';
return React.createElement(
'div',{ className: className,ref: 'popup',style: style },React.createElement('div',{ className: arrowClassName }),React.createElement(
'div',{ className: innerClassname },props.children
)
);
}
}]);
return Popup;
})(React.Component);
module.exports = Popup;
这是我的package.json:
"dependencies": {
"accounting": "0.4.1","classnames": "2.1.2","dom-align": "1.6.7","foundation-sites": "^5.5.2","fuzzysort": "0.9.3","he": "0.5.0","immutable": "3.7.3","joi": "6.9.0","lie": "3.0.2","marked": "0.3.18","moment": "2.19.3","natives": "1.1.6","node-sass": "4.13.0","pdfobject": "2.1.1","qwest": "2.0.7","rc-slider": "1.2.2","rc-tooltip": "2.4.1","react": "0.13.3","react-loader": "1.4.0","react-router": "0.13.3","reflux": "0.2.7","store": "1.3.20","text-mask-core": "5.1.2","underscore": "1.8.2"
},"devDependencies": {
"@babel/core": "7.10.0","@babel/plugin-proposal-object-rest-spread": "7.10.1","@babel/plugin-transform-regenerator": "7.10.3","@babel/preset-env": "7.10.0","@babel/preset-react": "7.10.0","autoprefixer": "9.8.4","babel-core": "7.0.0-bridge.0","babel-loader": "8.1.0","clean-webpack-plugin": "3.0.0","css-loader": "3.5.3","html-webpack-plugin": "3.2.0","html-webpack-plugin-remove": "0.1.0","jsdom": "9.9.1","mini-css-extract-plugin": "0.8.0","mocha": "3.2.0","mocha-loader": "^5.1.0","postcss-loader": "3.0.0","sass-loader": "8.0.2","sinon": "1.17.7","source-map-support": "0.5.3","style-loader": "1.2.1","webpack": "4.43.0","webpack-cli": "3.3.11","webpack-dev-server": "3.11.0","webpack-node-externals": "^1.7.2","webpack-shell-plugin": "^0.5.0"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。