我正在发现React-Router,我有一个问题,为什么我可以直接在地址栏中输入带有hashHistory的URL,却不能直接使用browserHistory输入URL?
我尝试访问的网址:
localhost:3000/element/createform
这是我的代码:
// import {...}
// then the code content
<ApolloProvider client={client} >
<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={ElementList}/>
<Route path="element/createform" component={CreateForm} exact/>
</Route>
</Router>
</ApolloProvider>
使用browserHistory可以返回“无法获取路径”,但是使用hashHistory可以。那为什么呢?
答案 0 :(得分:0)
您需要Web服务器始终返回主HTML文件。
如果您调用example.com/index.html/test,则浏览器将请求example.com/index.html,然后让index.html处理哈希(至少在此处)。
如果您调用example.com/index.html/test,则浏览器将请求另一个名为test的文件,该文件在服务器上找不到。