- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的路线配置如下所示(仅显示我认为可能相关的部分):
var React = require('react');
var Router = require('react-router');
var { Route, DefaultRoute, NotFoundRoute } = Router;
var routes = (
<Route handler={AppHandler}>
<DefaultRoute handler={HomeHandler}/>
<Route name='home' path='/home' handler={HomeHandler}/>
<Route name='settings' path='/settings/?:tab?' handler={SettingsHandler}/>
<NotFoundRoute handler={NotFoundHandler}/>
</Route>
);
Router.run(routes, Router.HistoryLocation, function (Handler) {
React.render(<Handler/>, document.getElementById('application'));
});
现在,在我的设置 react 文件中,我有以下内容:
var Settings = React.createClass({
mixins: [Router.State],
render: function() { ... }
});
如果我访问host.local/settings
并记录this.getParams()
一切正常,文件渲染显示 Object {tab: undefined}
在控制台中。但一旦我尝试host.local/settings/user
- 我期望控制台返回类似 Object {tab: 'user'}
的内容-,整个事情在某个地方崩溃并开始抛出 Uncaught SyntaxError: Unexpected token <
在控制台中。
React 还很年轻,因此在许多情况下错误相当模糊。
我已遵循 Path Matching Guide 上提供的规范 而且它看起来很标准,所以我只能假设这是 react 路由器本身的问题或者我错过了什么?
<小时/>tl;dr:这不是react-router的问题。
长版:
显然,问题不在于 ReactJS,也不在于 React-Router 本身。它主要涉及 gulp-webserver 上的一个错误(我正在使用它来使用代理连接并行运行的单独项目进行开发),并且当直接在浏览器上键入 URL 而不是被访问时会触发错误通过链接。
我做了一个测试,导航时工作正常,但按照 this github issue 中所述直接访问时会崩溃。 ,这基本上使我的功能深度链接测试不可行,但在生产中应该可以工作。
<小时/>tl;dr:这也不是 gulp-webserver 的问题。
就我而言,它与relative
相关。和absolute
正如前面提到的,gulp-webserver 没有任何问题。更具体地说,我必须确保您的脚本和 CSS 引用是绝对的,这样它就不会尝试在您在 URL 中键入的路径中找到它们。
例如:
您有两个网址:/settings
和/settings/account
。在这种情况下,如果您的脚本包含在后备文件中,类似于 <script src="scripts/main.js"></script>
,服务器将为其返回 404,因为 /settings/scripts/main.js
中没有文件。 .
我真是个傻瓜,但万一其他人也上当了,我希望这会有所帮助。
<小时/>最佳答案
感谢您的分析,它帮助我意识到这不是 React Router 的问题,而是我自己的路径的问题。
我添加了<base href="/" />
进入<head>
我的index.html
它起作用了(:
针对 React Router 3 进行编辑:
自 2016 年初以来,当您设置 <base>
时,React Router 将显示警告:
Warning: Automatically setting basename using <base href> is deprecated
and will be removed in the next major release. The semantics of <base href>
are subtly different from basename. Please pass the basename explicitly in the
options to createHistory
最好这样做:
const history = useRouterHistory(createHistory)({
basename: '/'
});
关于reactjs - 访问react-router动态段时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253162/
基本上,我有一个通过此 url 注册用户的 CodeIgniter 站点: http://website.com/user/register/1 不幸的是,当您像这样在 URL 中传递额外参数时: h
基本上,我有一个通过此 url 注册用户的 CodeIgniter 站点: http://website.com/user/register/1 不幸的是,当您像这样在 URL 中传递额外参数时: h
只有当每篇文章至少有 2 个段落时,是否可以在每篇文章的第一段文本后附加(而不是使用 .after())HTML div,否则不要添加 div? $('.content').each(functio
我是一名优秀的程序员,十分优秀!