使用webpack + react + react-router + es6
时警告:[history]不推荐使用pushState;改为使用推送
<pre>
import React from 'react';
import ReactDOM from 'react-dom';
import {createHistory} from 'history';
import App from './component/app';
import About from './component/about';
import Concat from './component/concat';
import List from './component/list';
import {Router, Route} from 'react-router';
const history = createHistory();
const router = (
<Router history={history}>
<Route path="/" component={App}>
<Route path="about" component={About} />
<Route path="concat" component={Concat} />
<Route path="list/:id" component={List} />
<Route path="*" component={About}/>
</Route>
</Router>
);
ReactDOM.render(
router,
document.getElementById('root')
);
</pre>
答案 0 :(得分:9)
我今天也有同样的问题,这是由于对历史回购的新合并请求:
https://github.com/rackt/history/commit/a9db75ac71b645dbd512407d7876799b70cab11c
[TEMP FIX] 更新你的package.json,更改&#34;历史&#34;到&#34; 1.13.1&#34;在依赖中。做一个&#34; npm安装&#34;之后更新。
[REAL FIX] 等到有人将修复程序合并到react-router。
答案 1 :(得分:2)
在以前版本的History(npm安装历史记录)中使用了pushState。 pushState是HTML5的一项功能,涉及更新URL而无需导航到页面/模板/组件。
这是为了纪念push('path')而被弃用,这是一种更清晰的语法。
替换
this.history.pushState(null, "/route/")
与
this.history.push('/store/' + storeId);
答案 2 :(得分:0)
否,截至2018年9月,本机浏览器历史记录API 未弃用,并且pushState
方法也未弃用 。查看文档:{{3}}
https://developer.mozilla.org/en-US/docs/Web/API/History_API
https://www.w3.org/TR/html50/browsers.html#history
我开始感觉到React社区会误导信息,因为它重新发明了浏览器功能,因为名为history
的库用push方法替换了自己的pushState。
根据我的经验,history.pushState(<state-object>, 'page title', '#url')
效果很好,该API的事件可靠。根据位置URL和历史记录活动进行history.state
更新(历史记录的状态,可以将其链接到文档/全局状态)非常有用。可以通过编辑或评论随意添加更正或见解。理解该API很有用,这个问题表明人们普遍倾向于避免理解本机Web API,这是我认为很强的反模式,与Web的发展背道而驰。