我对 react-router 构建 URL 的方式有疑问。目前 URL 为我提供了以下页面结构:
根组件:
http://localhost:3000/#/?_k=24zils
联系组件:
http://localhost:3000/#/contact?_k=v12iev
关于组件:
http://localhost:3000/#/about?_k=b22bqm
我很想让他们这样显示:
根组件:
http://localhost:3000/#/
联系组件:
http://localhost:3000/#/contact
关于组件:
http://localhost:3000/#/about
我正在阅读 react-router 支持的 browserHistory。它使用浏览器内置的 History API 来操作 URL。
路由器文件:
//Import Dependencies.
import React from 'react';
import { Router, Route } from 'react-router'
import ReactDOM from 'react-dom';
//Import Components.
import HomeElement from '../views/home/home.jsx';
import ContactElement from '../views/contact/contact.jsx';
import AboutElement from '../views/about/about.jsx';
//Set up routes.
let routes = (
<Router>
<Route path='/' component={HomeElement}/>
<Route path='/about' component={AboutElement}/>
<Route path='/contact' component={ContactElement}/>
</Router>
);
export default routes;
主文件:
//Import Dependencies.
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, browserHistory } from 'react-router'
//Import Routes.
import routes from './routes/routes.js';
ReactDOM.render(<Router history={browserHistory} routes={routes} />, document.getElementById('component-wrapper'));
我收到零错误。 URL 仍然使用查询参数进行结构化。关于我做错了什么有什么想法吗?
服务器:
var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./webpack.config');
new WebpackDevServer(webpack(config), {
publicPath: config.output.publicPath,
hot: true,
historyApiFallback: true
}).listen(3000, 'localhost', function (err, result) {
if (err) {
console.log(err);
}
console.log('Listening at localhost:3000');
});
最佳答案
当使用 react-router 的哈希历史记录时,您可以将 queryKey
选项设置为 false 以禁用此行为,即使不推荐这样做也是如此。
import React from 'react'
import ReactDOM from 'react-dom'
import { Router } from 'react-router'
import createHistory from 'history/lib/createHashHistory'
import routes from './routes/routes.js'
var history = createHistory({ queryKey: false })
ReactDOM.render(
<Router history={history} routes={routes} />,
document.getElementById('component-wrapper')
)
有关此的更多信息 here
关于javascript - ReactJS URL 查询字符串。浏览器历史记录不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34926407/