Trước hết, bạn không cần phải làm var r = this;
như thế này trong if statement
đề cập đến bối cảnh của callback chính nó mà kể từ khi bạn đang sử dụng chức năng mũi tên dùng để chỉ Phản ứng bối cảnh phần.
Theo các tài liệu:
vật lịch sử thường có các thuộc tính và phương pháp sau đây:
Vì vậy, trong khi điều hướng, bạn có thể vượt qua đạo cụ vượt qua đến đối tượng lịch sử như
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
hoặc tương tự cho các thành phần liên kết
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
và sau đó trong thành phần đó được trả lại với /template
tuyến đường, bạn có thể truy cập các đạo cụ được truyền như
this.props.location.state.detail
Cũng nên nhớ rằng, khi sử dụng các đối tượng lịch sử hoặc vị trí từ đạo cụ, bạn cần kết nối thành phần với withRouter
.
Theo Documents:
withRouter
Bạn có thể nhận được quyền truy cập vào thuộc tính của đối tượng lịch sử và gần nhất <Route>'s
trận đấu thông qua các thành phần withRouter
bậc cao. withRouter
sẽ hiển thị lại thành phần mỗi khi tuyến đường thay đổi với cùng đạo cụ như <Route>
làm cho props: { match, location, history }
.
Nguồn
2017-07-23 08:41:20
Các thành phần được đưa ra bởi một 'Route' nên có quyền truy cập cho 'this.props.location',' this.props.history', vv Tôi nghĩ bạn không cần phải sử dụng 'ref' nữa với v4. Hãy thử làm 'this.props.history.push ('/ template'); ' – saadq
Nó không phải là ref, Nó là biến trỏ đến điều này; this.props.history.push ('/ template'); đưa tôi đến trang tiếp theo nhưng tôi muốn truyền đạo cụ với họ .ref = this; – IshanGarg
Bạn đang cố gắng chuyển 'đạo cụ' cho thành phần khớp với tuyến đường? Tôi nghĩ [chủ đề GitHub] (https://github.com/ReactTraining/react-router/issues/4105) đề cập đến mối quan tâm của bạn. – saadq