Я пытаюсь написать js-код-трансформатор. Мне нужно разобрать JS в AST, внести некоторые изменения, например добавить новую декларацию импорта и сгенерировать JS-код.Преобразователь кода AST в JS
В настоящее время у меня есть некоторые проблемы с генерацией кода JS. Декораторы появляются в неправильном месте, а генератор удаляет скобки вокруг JSX.
Я новичок в этой области, поэтому, возможно, я пропускаю некоторые варианты при преобразовании/генерации кода.
код Источник:
// Core
import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import { actions } from '../../actions/navigation';
const mapStateToProps = ({ navigation }) => ({ // eslint-disable-line arrow-body-style
menuStatus: navigation.get('menuStatus')
});
const mapDispatchToProps = (dispatch) => ({ // eslint-disable-line arrow-body-style
actions: bindActionCreators({ ...actions }, dispatch)
});
@connect(mapStateToProps, mapDispatchToProps)
export default class Home extends Component {
render() {
return (
<section>
<h1>Home container!</h1>
</section>
);
}
}
Parsed/сгенерированный код:
// Core
import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import { actions } from '../../actions/navigation';
const mapStateToProps = ({ navigation }) => ({ // eslint-disable-line arrow-body-style
menuStatus: navigation.get('menuStatus')
});
const mapDispatchToProps = dispatch => ({ // eslint-disable-line arrow-body-style
actions: bindActionCreators({ ...actions }, dispatch)
});
export default @connect(mapStateToProps, mapDispatchToProps)
class Home extends Component {
render() {
return <section>
<h1>Home container!</h1>
</section>;
}
}
Это проблема с Вавилонкой, как я указал в исправленной вами ошибке: https://github.com/babel/babel/issues/5335#issuecomment-280829492 В настоящее время мы отслеживаем ее в https://github.com/Babel/Babel/вопросы/4585 – loganfsmyth