Trước hết, bạn không cần phải làm var r = this;
điều này trong if statement
đề cập đến bối cảnh của chính cuộc gọi lại mà vì bạn đang sử dụng chức năng mũi tên đề cập đến bối cảnh thành phần React.
Theo các tài liệu:
đối tượng lịch sử thường có các thuộc tính và phương thức sau:
Vì vậy, trong khi điều hướng, bạn có thể truyền đạo cụ cho đố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 Link
thành phần hoặc Redirect
thành phần
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
và sau đó trong thành phần được kết xuất 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
Ngoài ra, hãy nhớ rằng, khi sử dụng các đối tượng lịch sử hoặc vị trí từ các đạo cụ, bạn cần kết nối thành phần với withRouter
.
Theo Tài liệu:
với đồ trang sức
Bạn có thể có quyền truy cập vào các thuộc tính của đối tượng lịch sử và <Route>'s
kết quả khớp gần nhất
thông qua thành phần withRouter
bậc cao hơn. withRouter
sẽ kết xuất lại thành phần của nó mỗi khi tuyến đường thay đổi với cùng các đạo cụ như <Route>
kết xuất props: { match, location, history }
.
Route
nên có quyền truy cập vàothis.props.location
,this.props.history
vv Tôi nghĩ rằng bạn không cần phải sử dụngref
nữa với v4. Hãy thử làmthis.props.history.push('/template');