简历:我需要在没有 wepback 或类似工具的情况下运行 React Router。直接来自 CDN 链接,但我遇到了一些 require.js 错误。
我开始用 React 构建我的第一个应用程序,但我在用 React Router 苦苦挣扎。
HTML:
<body>
<div id="container"></div>
<script src="https://unpkg.com/react@15/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.js"></script>
<script src="https://npmcdn.com/react-router@2.4.0/umd/ReactRouter.js"></script>
<script type="text/babel" src="assets/scripts/03_templates/app.js" charset="utf-8"></script>
</body>
JS:
var { Router, Route, IndexRoute, hashHistory, IndexLink, Link, browserHistory } = ReactRouter;
//some classes
ReactDOM.render((
<Router history={hashHistory}>
<Route path="/" component={Window}>
<IndexRoute component={InitialPage}/>
<Route path="register" component={Register} />
<Route path="search" component={Search} />
</Route>
</Router>
), document.getElementById("container"));
一切都运行良好,但我在控制台上得到了这个:
react.js:3639 警告:您正在为 上的
getComponent
props手动调用 React.PropTypes 验证函数IndexRoute
。这已被弃用,并且不会在下一个主要版本的生产中使用。由于第三方 PropTypes 库,您可能会看到此警告。
所以,我想我的react-router是一个旧版本。我把链接改成
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-router/4.0.0-0/react-router.js"></script>
警告:React.createElement:类型不应为空、未定义、布尔值或数字。它应该是一个字符串(对于 DOM 元素)或一个 ReactClass(对于复合组件)。
我搜索了一下,似乎问题出在第 1 行。所以我改变了这个:
var { Router, Route, IndexRoute, hashHistory, IndexLink, Link, browserHistory } = ReactRouter;
对此:
import { Router, Route, IndexRoute, hashHistory, IndexLink, Link, browserHistory } from 'react-router';
现在我有这个问题:
app.js:2 Uncaught ReferenceError: require 未定义
我搜索了 require.js,尝试了一些东西,但没有解决我的问题。我错过了什么?我需要在没有 webpack 或类似工具的情况下运行它。
谢谢