react router 1.0.0-rc1的基本实现显示错误
Basic implementaton of react router 1.0.0-rc1 shows error
尝试在我的项目中实现react-router 1.0.0-rc1,我得到以下错误:
1)警告:反应。createElement: type不应该为空或未定义。它应该是一个字符串(对于DOM元素)或一个ReactClass(对于复合组件)。2)警告:只有函数或字符串可以挂载为React组件。3)未捕获的类型错误:无法读取未定义的属性'toUpperCase'
routes.js文件:
var React = require('react');
var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var Home = require('./components/home.js');
var Jobs = require('./components/jobs.js');
var JobDetail = require('./components/jobDetail');
var App = require('./components/app.js');
var About = require('./components/about.js');
var NotFoundPage = require('./components/notfoundpage.js');
var routes = (<Router>
<Route path="/" component={App}>
<Route path="jobs" component={Jobs}>
<Route path="jobs-detail" component={JobDetail} />
</Route>
<Route path="*" component={NotFoundPage} />
</Route>
</Router>);
module.exports = routes;
app.js文件:
var React = require('react');
var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var routes = require('./routes');
React.render(<Router>{routes}</Router>, document.body);
您有两个Router
标记(一个在app.js中,一个在routes.js中)。
从你的路由文件中删除Router
标签,然后app.js可以如下所示:
React.render(<Router routes={routes}/>, document.body);
我发现升级指南非常有用
@Clarkie提供的答案是正确的,但我仍然缺少一些其他的东西,最后设法使它工作。
1)我仍然有一个应用程序组件,我们不需要在1.0.0-rc1中使用。现在,我们可以有一个包含所需路径和组件名的路由。在我的例子中,现在我的路由文件(routes.js)看起来像这样:
var routes = (
<Route>
<Route path="/" component={Home} />
<Route path="jobs" component={Jobs}>
<Route path="jobdetail/:id" component={JobDetail} />
</Route>
<Route path="about" component={About} />
<Route path="*" component={NotFoundPage} />
</Route>
);
我已经在initialize_app.js中渲染了我的路由,在你的情况下,你可以在app.js或其他文件中这样做。在我的例子中,渲染代码看起来像这样:
var createHashHistory = require('react-router/node_modules/history/lib/createHashHistory');
var history = createHashHistory();
React.render(<Router history={history}>{routes}</Router>, document.body);
请注意,我已经按照@Clarkie的建议删除了routes.js中的Router。
我已经使用了哈希风格的url,如果你需要干净的url,你可以使用createBrowserHistory如doc所示。
2)导入react-router时的细微变化:在以前的版本中,我曾经这样要求路由器和路由:
var Router = require('react-router');
var Route = Router.Route;
但是在新版本中是这样的:
var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
相关文章:
- 如何在没有按钮的情况下实现显示隐藏JavaScript
- Meteoric(Meteor Ionic)软件包实现故障——Ionic样式未显示
- 如何用ajax实现加载显示
- 如何在JavaScript中实现html语法高亮显示
- 在实现后立即显示子元素
- AngularJS:如何实现全局错误处理程序并显示错误
- 在文本区域中实现 HTML 语法突出显示以编写代码
- 如何在不显示弹出窗口的情况下实现推特关注
- 如何使用jquery实现垂直图像滑块,其中在显示新图像之前,它将关闭并使用新图像打开
- 如何在这里实现隐藏和显示列表中的项目
- I'我正在尝试建立一个基本的网站来显示MySQL中的数据.有没有办法只使用javascript和HTML来实现这
- 如何在显示/隐藏文本时实现平滑过渡
- JQuery——如何实现类似macos dock的显示/隐藏行为的动画
- 如何使用javascript实现隐藏和显示单选按钮
- 我们如何将html元素作为参数传递到handlebaelper中,以实现显示更多/更少的功能
- 在不访问标记的情况下实现jquery显示/隐藏切换
- 使用一个按钮可以实现两个功能——显示内容和提交
- react router 1.0.0-rc1的基本实现显示错误
- 在rails应用程序中使用javascript实现显示/隐藏功能
- 使用JQuery实现显示模态对话框