我从这里有一个基于 Erik Rasmussen 的初学者工具包的 React 应用程序。
该应用程序运行良好,使用 React Router 和 Redux。
由于我的 Rails 应用程序已经很老了,嵌入应用程序的想法是有一个单独的控制器,其中index
动作呈现一个 iFrame,它本身从相同的控制器show
动作加载它的内容。
因此,我可以坚持使用 Rails 应用程序的布局,并在不进行任何更改的情况下呈现 React 应用程序标记。
在我通过
$> npm run build
我将 main -.js 和 main -.css 文件复制到 Rails 应用程序中,以便可以从那里交付它们。
之后我通过以下方式启动 React 应用程序:
$> npm run start
并通过 curl 请求起始页面。curl 输出进入我的show
erb 模板。在里面我更改了加载主要 JS 和 CSS 的 URL。
当我现在请求我的index
页面时,iFrame 会加载它的内容,应用程序似乎正在初始化,但根本不起作用。我看到呈现的内容,但单击链接会导致 Rails 路由错误。所以点击似乎没有被 React 拦截。
我试图跟踪执行情况,并最终在client.js
. 看起来,ReactDOM.render
接收到正确的参数,意思是,有一个外观正确的组件要渲染,一个商店,甚至是目标元素。
目前我在控制台中收到以下错误:
Uncaught ReferenceError: _classCallCheck is not defined
我正在使用 starterkit 的一个稍微古怪的版本,它将初始数据嵌入到标记中,但我无法弄清楚为什么 _classCallCheck 在 React 应用程序中工作,但在嵌入到 Rails 时停止工作。
即使是最新版本的 starterkit 也不起作用。在那种情况下,我根本没有收到任何错误,但有相同的行为。
由于旧的 Rails 版本我不能使用 React Gem,而且我需要一些 starterkit 提供的开箱即用的功能,所以改变这个也是没有选择的。
有什么提示吗?