Bagaimana kita bisa melewatkan parameter dengan this.props.history.push('/page')
React-Router v4?
.then(response => {
var r = this;
if (response.status >= 200 && response.status < 300) {
r.props.history.push('/template');
});
reactjs
react-router
IshanGarg
sumber
sumber
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');
props
ke komponen yang cocok dengan rute? Saya pikir utas GitHub ini membahas masalah Anda.Jawaban:
Pertama-tama, Anda tidak perlu melakukan
var r = this;
ini karenaif statement
merujuk pada konteks panggilan balik itu sendiri yang karena Anda menggunakan fungsi panah mengacu pada konteks komponen Bereaksi.Menurut dokumen:
Jadi saat menavigasi Anda dapat melewati alat peraga ke objek sejarah seperti
atau sama untuk
Link
komponen atauRedirect
komponendan kemudian di komponen yang dirender dengan
/template
rute, Anda dapat mengakses alat peraga yang dilewati sepertiJuga perlu diingat bahwa, ketika menggunakan objek riwayat atau lokasi dari alat peraga Anda harus menghubungkan komponen dengan
withRouter
.Sesuai Dokumen:
sumber
this.props.history.push('/template',response.data)
tidak bekerja. Menurut dokumenpush(path, [state])
, apakah Anda pikir itu tidak akan berhasil?kamu bisa memakai,
this.props.history.push("/template", { ...response })
atauthis.props.history.push("/template", { response: response })
maka Anda dapat mengakses data yang diuraikan dari
/template
komponen dengan mengikuti kode,const state = this.props.location.state
Baca lebih lanjut tentang React Session History Management
sumber
Untuk versi sebelumnya :
Dan dapatkan data dalam komponen terkait seperti di bawah ini:
Untuk versi yang lebih baru cara di atas berfungsi dengan baik tetapi ada cara baru:
Dan dapatkan data dalam komponen terkait seperti di bawah ini:
Petunjuk :
state
nama kunci digunakan di versi sebelumnya dan untuk versi yang lebih baru, Anda dapat menggunakan nama khusus Anda untuk meneruskan data dan menggunakanstate
nama tidak penting.sumber
Memperluas solusi (disarankan oleh Shubham Khatri) untuk digunakan dengan React hooks (16.8 dan seterusnya):
Melewati parameter dengan dorongan riwayat:
Mengakses parameter yang diteruskan menggunakan useLocation dari 'react-router-dom':
sumber
Jika Anda harus melewati parameter URL
ada penjelasan pos yang bagus dari Tyler McGinnis di situsnya, Tautan ke pos
berikut adalah contoh kode:
pada komponen history.push:
this.props.history.push(`/home:${this.state.userID}`)
pada komponen router Anda menentukan rute:
<Route path='/home:myKey' component={Home} />
pada komponen Home:
sumber
Tidak perlu menggunakan withRouter. Ini bekerja untuk saya:
Di halaman induk Anda,
Kemudian di ComponentA atau ComponentB Anda dapat mengakses
objek, termasuk metode this.props.history.push.
sumber
withRouter
karena Anda membungkus komponen Anda denganBrowserRouter
, yang bekerja sama.props
ke setiap komponen yang termasukhistory
prop.Untuk menggunakan Bereaksi 16.8+ (withHooks) Anda dapat menggunakan cara ini
Sumber di sini untuk membaca lebih lanjut https://reacttraining.com/react-router/web/example/auth-workflow
sumber
Tambahkan info untuk mendapatkan parameter kueri.
Untuk info lebih lanjut tentang URLSearchParams, periksa tautan ini URLSearchParams
sumber