Saya mencoba memuat tampilan detail berdasarkan rute react-router-dom yang harus mengambil parameter URL (id) dan menggunakannya untuk mengisi komponen lebih lanjut.
Rute saya terlihat /task/:id
dan komponen saya dimuat dengan baik, sampai saya mencoba mengambil: id dari URL seperti ini:
import React from "react";
import { useParams } from "react-router-dom";
class TaskDetail extends React.Component {
componentDidMount() {
let { id } = useParams();
this.fetchData(id);
}
fetchData = id => {
// ...
};
render() {
return <div>Yo</div>;
}
}
export default TaskDetail;
Ini memicu kesalahan berikut dan saya tidak yakin di mana menerapkan dengan benar useParams ().
Error: Invalid hook call. Hooks can only be called inside of the body of a function component.
Dokumen hanya menunjukkan contoh berdasarkan komponen fungsional, bukan berbasis kelas.
Terima kasih atas bantuan Anda, saya baru bereaksi.
reactjs
react-router
Jorre
sumber
sumber
useParams
? Mungkin mengubahnya menjadiHOC
?Jawaban:
Anda dapat menggunakannya
withRouter
untuk mencapai ini. Cukup bungkus komponen Anda yang sudah diekspor di dalamnyawithRouter
dan kemudian Anda bisa menggunakanthis.props.match.params.id
untuk mendapatkan parameter alih-alih menggunakanuseParams()
. Anda juga bisa mendapatkanlocation
,match
atauhistory
informasi dengan menggunakanwithRouter
. Mereka semua lewat di bawahthis.props
Menggunakan contoh Anda akan terlihat seperti ini:
Sederhana seperti itu!
sumber
Params diturunkan melalui alat peraga pada objek pertandingan.
sumber: https://redux.js.org/advanced/usage-with-react-router
Berikut adalah contoh dari dokumen yang merusak props dalam argumen.
sumber
Karena kait tidak akan berfungsi dengan komponen berbasis kelas, Anda dapat membungkusnya dalam suatu fungsi dan meneruskan properti-properti tersebut:
Tapi, seperti kata @ michael-mayo, saya berharap ini adalah apa
withRouter
yang sudah dilakukan.sumber
Anda tidak dapat memanggil pengait seperti "useParams ()" dari React.Component.
Cara termudah jika Anda ingin menggunakan hook dan memiliki react.component yang ada adalah membuat fungsi kemudian memanggil React.Component dari fungsi itu dan meneruskan parameter.
Rute peralihan Anda akan tetap seperti itu
maka Anda akan dapat memperoleh id dari props di komponen reaksi Anda
sumber
Coba sesuatu seperti ini
sumber
Dengan react router 5.1 Anda bisa mendapatkan id dengan mengikuti:
dan komponen Anda daripada yang dapat mengakses id:
sumber