Jawaban:
window.location.href
adalah yang Anda cari.
req.originalUrl
dari ekspres atau yang lainnya. Berbagai perpustakaan perutean reaksi yang memiliki dukungan SSR memiliki metode untuk mendapatkan informasi ini.
Jika Anda membutuhkan jalur lengkap dari URL Anda, Anda dapat menggunakan vanilla Javascript:
window.location.href
Untuk mendapatkan jalur saja (tanpa nama domain), Anda dapat menggunakan:
window.location.pathname
console.log(window.location.pathname); //yields: "/js" (where snippets run)
console.log(window.location.href); //yields: "https://stacksnippets.net/js"
Sumber: Nama jalur lokasi Properti - W3Schools
Jika Anda belum menggunakan "react-router", Anda dapat menginstalnya menggunakan:
yarn add react-router
lalu di React.Component dalam "Route", Anda dapat memanggil:
this.props.location.pathname
Ini mengembalikan jalur, tidak termasuk nama domain.
Terima kasih @ abdulla-zulqarnain!
window.location.pathname
this.props.location
adalah fitur react-router , Anda harus menginstalnya jika ingin menggunakannya.
Catatan: tidak mengembalikan url lengkap.
Anda mendapatkan undefined
karena Anda mungkin memiliki komponen di luar React Router.
Ingatlah bahwa Anda perlu memastikan bahwa komponen yang Anda panggil this.props.location
ada di dalam <Route />
komponen seperti ini:
<Route path="/dashboard" component={Dashboard} />
Kemudian di dalam komponen Dashboard, Anda memiliki akses ke this.props.location
...
<Route />
Anda dapat menggunakan komponen tingkat tinggi withRouter .
Untuk mendapatkan instance router saat ini atau lokasi saat ini Anda harus membuat komponen Higher order dengan withRouter
from react-router-dom
. jika tidak, ketika Anda mencoba mengaksesnya this.props.location
akan kembali undefined
Contoh
import React, { Component } from 'react';
import { withRouter } from 'react-router-dom';
class className extends Component {
render(){
return(
....
)
}
}
export default withRouter(className)
Hanya untuk menambahkan sedikit dokumentasi lebih lanjut ke halaman ini - Saya telah berjuang dengan masalah ini untuk sementara waktu.
Seperti yang dikatakan di atas, cara termudah untuk mendapatkan URL adalah melalui window.location.href
.
kita kemudian dapat mengekstrak bagian-bagian URL melalui vanilla Javascript dengan menggunakan let urlElements = window.location.href.split('/')
Kami kemudian akan console.log(urlElements)
melihat Array elemen yang dihasilkan dengan memanggil .split () di URL.
Setelah Anda menemukan indeks mana dalam larik yang ingin Anda akses, Anda dapat menetapkan ini ke variabel
let urlElelement = (urlElements[0])
Dan sekarang Anda dapat menggunakan nilai urlElement, yang akan menjadi bagian spesifik dari URL Anda, di mana pun Anda inginkan.
Seperti yang disebutkan orang lain, pertama Anda membutuhkan react-router
paket. Tetapi location
objek yang diberikannya berisi url yang diuraikan.
Tetapi jika Anda sangat menginginkan url lengkap tanpa mengakses variabel global, saya yakin cara tercepat untuk melakukannya adalah
...
const getA = memoize(() => document.createElement('a'));
const getCleanA = () => Object.assign(getA(), { href: '' });
const MyComponent = ({ location }) => {
const { href } = Object.assign(getCleanA(), location);
...
href
adalah yang berisi url lengkap.
Untuk yang memoize
biasanya saya gunakan lodash
, ini diterapkan seperti itu untuk menghindari pembuatan elemen baru tanpa perlu.
PS: Tentu saja Anda tidak dibatasi oleh browser kuno Anda mungkin ingin mencobanya new URL()
, tetapi pada dasarnya seluruh situasi kurang lebih tidak ada gunanya, karena Anda mengakses variabel global dengan satu atau lain cara. Jadi mengapa tidak menggunakan window.location.href
saja?
Anda dapat mengakses uri / url lengkap dengan 'document.referrer'
Periksa https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer