【发布时间】:2015-06-04 12:47:11
【问题描述】:
我一直在浏览 here 找到的 react-router 教程,目前我很困惑......
React-router 无法识别我的组件。
(我正在使用带有 Rails 的 React.js)
代码如下:
var DefaultRoute = ReactRouter.DefaultRoute;
var Link = ReactRouter.Link;
var Route = ReactRouter.Route;
var RouteHandler = ReactRouter.RouteHandler;
var App = React.createClass({
getInitialState: function () {
return {
showTags: false,
current_user: this.props.current_user
};
},
_handleToggleTags: function() {
this.setState({
showTags: !this.state.showTags
})
},
render: function () {
return <div>
<Header
onToggleTags={ this._handleToggleTags }
user={this.props.current_user}
/>
<RouteHandler/>
<div id="images">
<ImageBox/>
</div>
</div>;
}
});
var routes = (
<Route name="app" path="/" handler={App}>
<Route name="tags" handler={TagsBox}/>
</Route>
);
ReactRouter.run(routes, function (Handler) {
React.render(<Handler/>, document.body);
});
如果我在 App 之前移动 TagsBox,它会起作用,但似乎没有其他人这样做。我错过了什么?
如果它有所不同,我的组件的当前结构是:
- app.js.jsx
- 标签
- _tags_box.js.jsx
【问题讨论】:
-
你能澄清一下“在应用程序之前移动标签框”的意思吗?它是在同一个文件中定义的吗?未定义的组件听起来像是缺少导入。
-
你的 React 库是通过脚本标签加载到浏览器上的吗?
-
@AdamStone - 如果我在 App 类之前渲染 TagsBox 类
-
@PhInside 是的。它通过资产管道清单文件 cl.ly/image/2g3W3k3d251m 包含在内
-
尝试直接在你的文件中调用 React 库。也许 var React = require(react) 我希望它会有所帮助。
标签: ruby-on-rails reactjs react-router