Bagaimana saya bisa mendefinisikan rute dalam file routes.jsx saya untuk menangkap nilai __firebase_request_key
parameter dari URL yang dihasilkan oleh proses masuk tunggal Twitter setelah pengalihan dari server mereka?
http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla
Saya mencoba dengan konfigurasi rute berikut, tetapi :redirectParam
tidak menangkap param yang disebutkan:
<Router>
<Route path="/" component={Main}>
<Route path="signin" component={SignIn}>
<Route path=":redirectParam" component={TwitterSsoButton} />
</Route>
</Route>
</Router>
reactjs
react-router
Franco
sumber
sumber
query strings
"? var1 = val & var2 = val2",:url paramters
"/ photos /: companyiD / new"Jawaban:
Bereaksi Router v3
React Router sudah mem-parsing lokasi untuk Anda dan meneruskannya ke RouteComponent Anda sebagai alat peraga. Anda dapat mengakses bagian permintaan (setelah? Di url) melalui
Jika Anda mencari nilai parameter path, dipisahkan dengan titik dua (:) di dalam router, ini dapat diakses melalui
Ini berlaku untuk versi React Router v3 yang terlambat (tidak yakin yang mana). Versi router yang lebih lama dilaporkan digunakan
this.props.params.redirectParam
.React Router v4 dan React Router v5, generik
React Router v4 tidak menguraikan kueri untuk Anda lagi, tetapi Anda hanya dapat mengaksesnya melalui
this.props.location.search
. Untuk alasan, lihat jawaban nbeuchat .Misalnya dengan pustaka qs yang diimpor sebanyak yang
qs
Anda bisa lakukanPustaka lain adalah string-query . Lihat jawaban ini untuk beberapa ide lagi tentang penguraian string pencarian. Jika Anda tidak memerlukan kompatibilitas IE, Anda juga dapat menggunakannya
Untuk komponen fungsional, Anda akan mengganti
this.props.location
dengan hook useLocation . Catatan, Anda dapat menggunakanwindow.location.search
, tetapi ini tidak akan memungkinkan untuk memicu React rendering on changes. Jika komponen (non-fungsional) Anda bukan anak langsung dariSwitch
Anda perlu menggunakan withRouter untuk mengakses alat peraga yang disediakan router.Umum
saran nizam.sp untuk dilakukan
akan membantu dalam hal apa pun.
sumber
console.dir()
karena catatan peringatan ... setidaknya :)react-router-dom
Aku harus menggunakanwithRouter
untuk membuat pekerjaan ini!Bereaksi Router v4
Menggunakan
component
Komponen secara otomatis diberikan dengan alat peraga rute.
Menggunakan
render
Alat peraga rute diteruskan ke fungsi render.
sumber
query params
URL aplikasi saya saat ini di komponen turunan menggunakan React Router v4. Jika Anda mencariquery params
, this.props.location.query di React Router 4 telah dihapus (saat ini menggunakan v4.1.1). Lihat jawaban ini: stackoverflow.com/a/43630848/1508105/users/?q=...
tetapi Anda bisa melakukannya/user?q=...
. Anda harus menggunakanthis.props.location.search
React Router v4 dan mengurai hasilnya sendiri seperti yang dijelaskan dalam jawaban saya di bawah ini.this.props.location.search
tidak ada.Bereaksi Router v3
Dengan React Router v3, Anda bisa mendapatkan kueri-string dari
this.props.location.search
(? Qs1 = naisarg & qs2 = parmar). Misalnya, denganlet params = queryString.parse(this.props.location.search)
, mau memberi{ qs1 : 'naisarg', qs2 : 'parmar'}
Bereaksi Router v4
Dengan React Router v4,
this.props.location.query
tidak ada lagi. Anda perlu menggunakanthis.props.location.search
dan mengurai parameter kueri sendiri atau menggunakan paket yang ada sepertiquery-string
.Contoh
Berikut adalah contoh minimal menggunakan React Router v4 dan
query-string
perpustakaan.Rasional
Rasional tim React Router untuk menghapus
query
properti adalah:Anda dapat menemukan diskusi lengkap tentang GitHub .
sumber
Sejauh yang saya tahu ada tiga metode yang dapat Anda lakukan itu.
1. gunakan ekspresi reguler untuk mendapatkan string kueri.
2. Anda dapat menggunakan api browser. gambar url saat ini adalah seperti ini:
kami hanya ingin mendapatkan 123;
Pertama
Kemudian
3. gunakan perpustakaan ketiga yang disebut 'query-string'. Pertama instal
Kemudian impor ke file javascript saat ini:
Langkah selanjutnya adalah mendapatkan 'token' di url saat ini, lakukan hal berikut:
Semoga ini bisa membantu.
Diperbarui pada 25/02/2019
http://www.google.com.au?app=home&act=article&aid=160990
kami mendefinisikan fungsi untuk mendapatkan parameter:
Kami bisa mendapatkan 'bantuan' dengan:
sumber
React Router v4 tidak lagi memiliki
props.location.query
objek (lihat diskusi github ). Jadi jawaban yang diterima tidak akan berfungsi untuk proyek yang lebih baru.Solusi untuk v4 adalah menggunakan string-string pustaka luar untuk menguraikan
props.location.search
sumber
{'?foo': 'bar'}
var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true });
harus memperbaikinya. Contoh ditemukan di sini: github.com/ljharb/qsSaat menggunakan React hooks tidak ada akses untuk mengakses
this.props.location
. Untuk mengambil parameter url gunakanwindow
objek.sumber
Bereaksi Router v4
Harap dicatat bahwa ini sedang dalam percobaan.
Periksa kompatibilitas browser di sini: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/URLSearchParams#Browser_compatibility
sumber
Anda dapat memeriksa react-router , secara sederhana, Anda dapat menggunakan kode untuk mendapatkan parameter kueri selama Anda mendefinisikan di router Anda:
sumber
props.params
adalah untuk URL params (segmen url diawali dengan ':' di router reaksi),props.location.query
menyimpan parameter string permintaan (setelah '?') dan itulah yang diinginkan OP.Bereaksi Router 5.1+
5.1 memperkenalkan berbagai kait seperti
useLocation
danuseParams
yang bisa digunakan di sini.Contoh:
Lalu kalau kita berkunjung katakanlah
Anda bisa mengambilnya seperti
sumber
Jika Router Anda seperti ini
Anda akan mendapatkan id seperti ini
sumber
Dengan one-liner ini, Anda dapat menggunakannya di mana saja di React Hook dan React Class Component dengan JavaScript biasa.
https://www.hunterisgod.com/?city=Leipzig
sumber
Jika Anda tidak mendapatkan
this.props
... yang Anda harapkan berdasarkan jawaban yang lain, Anda mungkin perlu menggunakanwithRouter
( docs v4 ):sumber
Saya kesulitan menyelesaikan masalah ini. Jika tidak ada yang berhasil Anda dapat mencoba ini. Saya menggunakan aplikasi create-react-app
Persyaratan
react-router-dom ":" ^ 4.3.1 "
Larutan
Di lokasi di mana router ditentukan
Tambahkan nama parameter yang ingin Anda sampaikan seperti ini
Pada halaman tempat Anda merender beberapa / jalur, Anda dapat menentukan ini untuk melihat id panggilan nama parameter seperti ini
Di akhir di mana Anda mengekspor default
Ingatlah untuk memasukkan impor
Ketika console.log (this.props) Anda akan dapat apa yang telah diturunkan. Selamat bersenang-senang!
sumber
RouteComponentProps<{id: number}>
React router
dari v4 dan seterusnya tidak lagi memberi Andaquery params
langsung dilocation
objeknya. Alasannya adalahSetelah memasukkan itu, akan lebih masuk akal untuk hanya mengurai location.search dalam komponen tampilan Anda yang mengharapkan objek permintaan.
Anda dapat melakukan ini secara umum dengan mengganti
withRouter
darireact-router
likecustomWithRouter.js
sumber
sumber
Mungkin agak terlambat tetapi kaitan reaksi ini dapat membantu Anda mendapatkan / menetapkan nilai dalam permintaan URL: https://github.com/rudyhuynh/use-url-search-params (ditulis oleh saya).
Ini bekerja dengan atau tanpa
react-router
. Di bawah ini adalah contoh kode dalam kasus Anda:sumber
this.props.params.your_param_name
akan bekerja.Ini adalah cara untuk mendapatkan params dari string kueri Anda.
Silakan lakukan
console.log(this.props);
untuk mengeksplorasi semua kemungkinan.sumber
Di komponen tempat Anda perlu mengakses parameter yang dapat Anda gunakan
this.props.location.state.from.search
yang akan mengungkapkan seluruh string kueri (semuanya setelah
?
tanda)sumber
Katakan ada url sebagai berikut
Jika kami ingin mengekstrak kode dari URL itu, metode di bawah ini akan berfungsi.
sumber
Di Bereaksi Router v4 hanya withRoute adalah cara yang benar
Anda bisa mendapatkan akses ke properti objek sejarah dan kecocokan terdekat melalui komponen withRouter orde tinggi. withRouter akan meneruskan alat peraga pertandingan, lokasi, dan riwayat yang diperbarui ke komponen yang dibungkus setiap kali dirender.
https://reacttraining.com/react-router/web/api/withRouter
sumber
Saya menggunakan paket eksternal yang disebut query-string untuk mengurai parameter url seperti itu.
sumber
Ketika Anda bekerja dengan dom rute reaksi maka akan mengosongkan objek dengan untuk mencocokkan tetapi jika Anda melakukan kode berikut maka itu akan untuk komponen es6 serta bekerja langsung untuk komponen fungsi
Dengan cara ini Anda bisa mendapatkan alat peraga dan mencocokkan params dan id profil
Ini bekerja untuk saya setelah banyak penelitian tentang komponen ES6.
sumber
Atau mungkin sesuatu seperti ini?
sumber
Anda dapat membuat kait sederhana untuk mengekstraksi params pencarian dari lokasi saat ini:
maka Anda dapat menggunakannya di dalam komponen fungsional Anda seperti ini:
sumber
sumber
sumber
solusi paling sederhana!
dalam routing:
dalam kode reaksi:
sumber