Я использую browserify-rails + babelify, чтобы перетащить jsx в проект реакции + rails.
Я очень озадачен, почему // require('');
необходим в components.js
(который является точкой реагирования) для работы трансляции jsx.
Если я удалю строку комментария // require('');
, я бы получил "SyntaxError: Неожиданный импорт маркера"
В настоящее время у меня нет указаний, так как почему строка комментария влияет на транспиляцию. Я также озадачен, если это проблема реагирования, или обновления, или браузера, или браузера-рельсы, или рельсов.
Обратитесь к https://github.com/sidazhou/react_rails_skeleton/tree/v0.0.1 для полной базы кода
components.js
// require(''); // somehow this is necessary, why?! Otherwise we get: "SyntaxError: Unexpected token import"
import React from 'react';
import ReactDOM from 'react-dom';
import Widgets from './components/Widgets.jsx';
ReactDOM.render( <Widgets />, document.getElementById('react_component') );
package.json
{
"name": "react-sample",
"dependencies": {
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"babelify": "^7.2.0",
"browserify": "^12.0.1",
"browserify-incremental": "^3.0.1",
"history": "^1.13.1",
"material-ui": "^0.13.4",
"react": "^0.14.3",
"react-dom": "^0.14.3",
"react-router": "^1.0.2",
"react-tap-event-plugin": "^0.2.1"
},
"engines": {
"node": ">= 0.10"
}
}
application.rb
config.browserify_rails.commandline_options = "-t [ babelify --presets [ es2015 react ] ]"