2015-12-07 19 views
5

khi sử dụng gói web + phản ứng + phản ứng-bộ định tuyến + es6Cảnh báo: [history] pushState không được chấp nhận; sử dụng push thay vì

Cảnh báo: [history] pushState không được dùng nữa; sử dụng push thay

<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

module 'history' là gì? Là nó từ một gói, hoặc mã của riêng bạn? Dù bằng cách nào, tôi không thấy bất kỳ bằng chứng nào cho thấy 'pushState' không được chấp nhận ở tất cả – CodingIntrigue

Trả lời

9

tôi đã cùng một vấn đề bản thân mình ngày hôm nay, đó là do yêu cầu hợp nhất mới cho repo Lịch sử:

https://github.com/rackt/history/commit/a9db75ac71b645dbd512407d7876799b70cab11c

[TEMP FIX] Cập nhật package.json của bạn , thay đổi "lịch sử" thành "1.13.1" trong các phụ thuộc. Làm một "npm install" sau đó để cập nhật.

[REAL FIX] Đợi cho đến khi ai đó kết hợp một bản sửa lỗi vào bộ phản ứng-bộ định tuyến.

+0

Cảm ơn bạn. Cảm ơn bạn. – adin

+2

Chỉ cần lưu ý, những gì bạn thấy chỉ là cảnh báo không dùng nữa. Tôi thấy không có lý do tại sao bạn sẽ từ bỏ các sửa lỗi để tránh nhìn thấy một cảnh báo trong giao diện điều khiển. – lecstor

2

Trong các phiên bản trước của Lịch sử (npm lịch sử cài đặt), pushState đã được sử dụng. pushState là một tính năng của HTML5 liên quan đến việc cập nhật URL mà không cần điều hướng đến một trang/mẫu/thành phần.

Điều này đã không được chấp nhận trong danh dự của push ('path'), mà là một cú pháp sạch hơn theo một số.

Thay

this.history.pushState(null, "/route/") 

với

this.history.push('/store/' + storeId); 
+2

Nhưng 'push' không cho phép truyền đối tượng' state'? Vậy làm thế nào để chúng ta đạt được điều đó? – Aaron

+1

Mỗi tài liệu tại đây https://github.com/mjackson/history/blob/master/docs/QuerySupport.md bạn có thể cung cấp đối tượng 'truy vấn' sẽ ánh xạ. ví dụ: history.push ({pathname: '/ the/path', truy vấn: {the: 'query'}}) –

Các vấn đề liên quan