为什么我可以直接在地址栏中使用hashHistory输入URL,而不能使用browserHistory输入URL?

时间:2018-07-11 14:17:34

标签: javascript reactjs react-router

我正在发现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可以。那为什么呢?

1 个答案:

答案 0 :(得分:0)

您需要Web服务器始终返回主HTML文件。

如果您调用example.com/index.html/test,则浏览器将请求example.com/index.html,然后让index.html处理哈希(至少在此处)。

如果您调用example.com/index.html/test,则浏览器将请求另一个名为test的文件,该文件在服务器上找不到。