В нашем приложении мы использовали библиотеку иконок, которая была создана первыми разработчиками и больше не поддерживалась новой версией react
(16.0 and higher
)
Мы решили оставить их прежний вид, лишь немного изменив код, чтобы он работал, и сделать как Component
.
Вот как это выглядит сейчас:
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import * as icons from 'icons';
class Icon extends Component {
static propTypes = {
type: PropTypes.oneOf(Object.keys(icons)).isRequired
};
render() {
const {type, ...other} = this.props;
const IconComponent = icons[type];
return IconComponent ? (
<IconComponent {...other}/>
) : null;
}
}
export * from '/icons';
export default Icon;
По идее все должно работать нормально, так как другие компоненты в этом каталоге написаны аналогичным образом.
Но есть ошибка, с которой я никогда раньше не сталкивался:
00:14:58 App /home/cpt/Desktop/prod/local/app/components/Base/Elements/IconSocial/index.js:3
00:14:58 App import _Object$defineProperty from 'babel-runtime/core-js/object/define-property';
00:14:58 App ^^^^^^
00:14:58 App SyntaxError: Unexpected token import
Ошибка указывает на эту строку: import * as icons from 'icons';
Мы используем babel-core": "6.26.3"
Подскажите, пожалуйста, что может быть? Заранее спасибо за любой ваш совет.
Это вавилонская проблема. Здесь вы можете прочитать об этом: https://github.com/babel/babel/issues/2877
Возможным решением было бы добавить это к плагинам:
"plugins": [
["transform-runtime", { "polyfill": false }]
]
Не понял как это работает, но помогло, спасибо большое :)