警告:[history] ​​pushState已弃用;用而不是推

时间:2015-12-07 07:59:25

标签: ecmascript-6 webpack react-router

使用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>

3 个答案:

答案 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的发展背道而驰。