React路由器错误-'无法调用方法'getRouteAtDepth'的未定义'
React-router error - 'Cannot call method 'getRouteAtDepth' of undefined'
我正在尝试在我的应用程序上实现react路由器。我的主文件包含以下代码:
'use strict';
import 'babel/polyfill';
import React from 'react/addons';
import App from './components/App';
import ContentPage from './components/ContentPage';
import Dispatcher from './core/Dispatcher';
import AppActions from './actions/AppActions';
import Router from 'react-router';
var { Route, RouteHandler, Link } = Router;
function run() {
var routes = (
<Route name="app" path="/" handler={App}>
<Route handler={ContentPage}/>
</Route>
);
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.body);
});
}
在我的应用程序组件中,我有以下代码:
render() {
return (
<div className="App">
<RouteHandler />
</div>
);
}
此代码生成以下错误:
TypeError: Cannot call method 'getRouteAtDepth' of undefined
at RouteHandler.createChildRouteHandler
如果我将<RouteHandler />
直接更改为<ContentPage />
,则代码有效。知道我做错了什么吗?
编辑:显然,我使用的是"React入门套件",它也在服务器上呈现"应用程序"组件。将react路由器添加到该组件时,会出现此(服务器端)错误。
我的项目不需要服务器端渲染,所以删除它解决了我的问题。等我有时间的时候,我会努力调查为什么会发生这种事。
尝试将router
移动到App
组件模块中,如下所示:
var React = require('react'),
Router = require('react-router'),
Route = Router.Route,
RouteHandler = Router.RouteHandler,
ContentPage = require('./components/ContentPage'),
App, routes;
App = React.createClass({
render: function(){
return (
<div className="App">
<RouteHandler />
</div>
);
}
});
routes = (
<Route name="app" path="/" handler={App}>
<Route handler={ContentPage}/>
</Route>
);
module.exports = {
run: function () {
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.body)
});
}
};
适当的话,你的run
模块看起来是这样的:
var AppRunner = require('./component/App');
AppRunner.run();
只要用ES6的方式重构它,我希望它能对你有所帮助。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- toBoolean方法类似于toString
- 如何在单击复选框后调用控制器方法
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- toLocaleDateString和toLocaleString方法不尊重机器时区
- 有条件更新d3.js力图中节点的最佳方法
- TypeError:在不兼容的接收器nodejs上调用了方法Uint8Array.length
- jQuery插件-从插件中调用公共方法