Saya mengalami sedikit masalah saat bermigrasi dari React-Router v3 ke v4. di v3 saya bisa melakukan ini di mana saja:
import { browserHistory } from 'react-router';
browserHistory.push('/some/path');
Bagaimana cara mencapai ini di v4.
Saya tahu bahwa saya dapat menggunakan, hoc withRouter
, konteks reaksi, atau alat peraga router acara ketika Anda berada dalam sebuah Komponen. tetapi tidak demikian halnya bagi saya.
Saya mencari kesetaraan NavigatingOutsideOfComponents di v4
reactjs
react-router
storm_buster
sumber
sumber
Jawaban:
Anda hanya perlu memiliki modul yang mengekspor
history
objek. Kemudian Anda akan mengimpor objek itu ke seluruh proyek Anda.Kemudian, alih-alih menggunakan salah satu router internal, Anda akan menggunakan
<Router>
komponen.sumber
createHashHistory
jika Anda menggunakanHashRouter
.Ini bekerja! https://reacttraining.com/react-router/web/api/withRouter
sumber
this.props.history.push('/some_route');
agar dapat berfungsi.const Component = props => {... // stuff}
danexport default withRouter(Component)
bekerja untuk saya pada komponen tanpa kewarganegaraanMirip dengan jawaban yang diterima, apa yang dapat Anda lakukan adalah menggunakan
react
danreact-router
itu sendiri untuk memberi Andahistory
objek yang dapat Anda lingkupi dalam file dan kemudian ekspor.history.js
Anda kemudian mengimpor Komponen dan memasang untuk menginisialisasi variabel riwayat:
Dan kemudian Anda bisa mengimpor aplikasi Anda ketika sudah terpasang:
Saya bahkan membuat dan paket npm yang melakukan hal itu.
sumber
Jika Anda menggunakan redux dan redux-thunk, solusi terbaik adalah menggunakan react-router-redux
sumber
Mendasarkan pada jawaban ini jika Anda memerlukan objek sejarah hanya untuk menavigasi ke komponen lain:
sumber
Di App.js
Kemudian di komponen anak:
sumber
Dalam kasus khusus
react-router
, menggunakancontext
adalah skenario kasus yang valid, misalnyaAnda dapat mengakses sebuah instance dari sejarah melalui konteks router, mis
this.context.router.history
.sumber