Pertama-tama, Anda tidak perlu melakukan var r = this;
ini karena if statement
merujuk pada konteks panggilan balik itu sendiri yang karena Anda menggunakan fungsi panah mengacu pada konteks komponen Bereaksi.
Menurut dokumen:
objek sejarah biasanya memiliki properti dan metode berikut:
Jadi saat menavigasi Anda dapat melewati alat peraga ke objek sejarah seperti
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
atau sama untuk Link
komponen atau Redirect
komponen
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
dan kemudian di komponen yang dirender dengan /template
rute, Anda dapat mengakses alat peraga yang dilewati seperti
this.props.location.state.detail
Juga perlu diingat bahwa, ketika menggunakan objek riwayat atau lokasi dari alat peraga Anda harus menghubungkan komponen dengan withRouter
.
Sesuai Dokumen:
denganRouter
Anda bisa mendapatkan akses ke properti objek sejarah dan <Route>'s
kecocokan terdekat
melalui komponen withRouter
tingkat tinggi. withRouter
akan merender ulang komponennya setiap kali rute berubah dengan alat peraga yang sama dengan <Route>
render props: { match, location, history }
.
Route
harus memiliki akses kethis.props.location
,this.props.history
, dll saya pikir Anda tidak perlu menggunakanref
lagi dengan v4. Coba lakukanthis.props.history.push('/template');