【发布时间】:2016-10-01 12:47:15
【问题描述】:
我创建了一个 Rails 应用程序并安装了react-rails。我还安装了browserify-rails 来帮助我管理外部反应包。
我的整个设置似乎运行良好,但是当我尝试使用 react-bootstrap 包的模态组件时,我遇到了一个萤火虫错误,它似乎阻止了所有其他 js 执行。错误显示:
未捕获的不变违规:addComponentAsRefTo(...):只有一个 ReactOwner 可以有 refs....
我尝试了许多可能的解决方案,但没有运气。我真的不明白为什么我会收到错误以及为什么它只发生在特定组件上,例如<Modal />。如果我使用普通的 html 模式,则没有错误。这是我的设置:
package.json
{
"name": "my_project",
"devDependencies": {
"browserify": "^13.1.0",
"browserify-incremental": "^3.1.1",
"reactify": "^1.1.1"
},
"license": "MIT",
"engines": {
"node": ">= 0.10"
},
"dependencies": {
"react": "^15.3.2",
"react-bootstrap": "^0.30.3",
"react-dom": "^15.3.2"
}
}
application.js
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require react
//= require react_ujs
//= require components
//= require_tree .
var React = window.React = global.React = require('react');
var ReactDOM= window.ReactDOM = global.ReactDOM = require('react-dom');
application.rb
...
config.browserify_rails.commandline_options = "-t reactify --extension=\".js.jsx\""
...
components.js
// Setup app into global name space for server rendering
var app = window.app = global.app = {};
var MyComponent = require('./components/my_component');
app.MyComponent = MyComponent;
my_component.js.jsx
var Modal = require('react-bootstrap').Modal;
var MyComponent = React.createClass({
render() {
return (
<Modal show={true}><h1>I'm working</h1></Modal>
)
}
});
module.exports = MyComponent;
我对反应非常陌生,因此我不确定此错误是否与我的设置有关,或者是否与其他问题有关?
【问题讨论】:
标签: javascript ruby-on-rails reactjs bootstrap-modal react-bootstrap