这有点奇怪,我想深入了解它。
我有一个页面,用户在其中输入他们的电子邮件地址并单击一个按钮,然后显示“您已注册!” 消息 - 简单。
为此,我有两条路线。主要路线和“签约”路线。
<Route name="app" path="/" handler={Main}>
<Route name="signed-up" path="signed-up" handler={SignedUp} />
<DefaultRoute handler={Signup} />
</Route>
在第一页,当用户输入电子邮件地址并单击按钮时,我触发 POST AJAX 以将电子邮件地址保存在我的后端数据库(使用 Axios 包)中,完成后,我转到“注册”路线.
handleSubmit() {
var router = this.context.router;
var email = this.refs.email.getDOMNode().value;
this.refs.email.getDOMNode().value = '';
helpers.postSignupEmail(email).then((response) => {
// then display the signed up page
router.transitionTo("signed-up");
});
}
现在,当我第一次输入页面的 URL 时
http://localhost:1338
浏览器(Chrome、FireFox、Safari)似乎都将 URL 更改为
http://localhost:1338/#/
很公平。在 FireFox 中,我输入一封电子邮件并单击提交按钮,一切正常并带我到
http://localhost:1338/#/signed-up
但是,现在在 Chrome 上,当我单击提交时,它不会更改路线。事实上,在开发者控制台上,我看到了一个错误。
首先,为什么“post”请求被取消了?其次,发生这种情况时,Chrome 没有响应。所以我刷新了页面,然后我得到了 Chrome 的“海军屏死机”..
现在,有趣的是,如果我将初始 URL 更改为
http://localhost:1338/?#/
(在哈希前面插入问号),然后在 Chrome 上一切正常。所以,这让我想知道这与我的路由路径或参数有关。
有任何想法吗?