Jak możemy przekazać parametr this.props.history.push('/page')
w React-Router v4?
.then(response => {
var r = this;
if (response.status >= 200 && response.status < 300) {
r.props.history.push('/template');
});
reactjs
react-router
IshanGarg
źródło
źródło
Route
powinni mieć dostęp dothis.props.location
,this.props.history
itp Myślę, że nie trzeba używaćref
już z v4. Spróbuj zrobićthis.props.history.push('/template');
props
komponent pasujący do trasy? Myślę, że ten wątek GitHub rozwiązuje problem.Odpowiedzi:
Przede wszystkim nie musisz tego robić,
var r = this;
ponieważif statement
odnosi się to do kontekstu samego wywołania zwrotnego, które ponieważ używasz funkcji strzałki, odnosi się do kontekstu komponentu React.Według dokumentów:
Podczas nawigacji możesz przekazywać rekwizyty do obiektu historii, takiego jak
lub podobnie dla
Link
komponentu lubRedirect
komponentua następnie w komponencie renderowanym z
/template
trasą, możesz uzyskać dostęp do przekazanych rekwizytów jakNależy również pamiętać, że podczas korzystania z obiektów historii lub lokalizacji z rekwizytów należy połączyć komponent
withRouter
.Zgodnie z Dokumentami:
źródło
this.props.history.push('/template',response.data)
nie działa. Według dokumentówpush(path, [state])
, czy nie uważasz, że to powinno działać?możesz użyć,
this.props.history.push("/template", { ...response })
lubthis.props.history.push("/template", { response: response })
możesz uzyskać dostęp do przeanalizowanych danych z
/template
komponentu, wykonując następujący kod,const state = this.props.location.state
Przeczytaj więcej o zarządzaniu historią sesji React
źródło
W przypadku wcześniejszych wersji:
I uzyskaj dane w powiązanym komponencie, tak jak poniżej:
W przypadku nowszych wersji powyższy sposób działa dobrze, ale istnieje nowy sposób:
I uzyskaj dane w powiązanym komponencie, tak jak poniżej:
Wskazówka :
state
nazwa klucza była używana we wcześniejszych wersjach, aw nowszych wersjach możesz używać swojej niestandardowej nazwy do przekazywania danych, a używaniestate
nazwy nie jest konieczne.źródło
Rozszerzanie rozwiązania (sugerowanego przez Shubhama Khatri) do użycia z hakami React (od 16.8):
Przekazywanie parametrów z wypychaniem historii:
Dostęp do przekazanego parametru za pomocą useLocation z 'React-router-dom':
źródło
Jeśli musisz przekazać parametry adresu URL
tam jest świetne wyjaśnienie postu Tyler McGinnis na jego stronie, Link do postu
oto przykłady kodu:
w komponencie history.push:
this.props.history.push(`/home:${this.state.userID}`)
w komponencie routera określasz trasę:
<Route path='/home:myKey' component={Home} />
w komponencie Home:
źródło
Korzystanie z routera nie jest konieczne. To działa dla mnie:
Na stronie nadrzędnej
Następnie w ComponentA lub ComponentB można uzyskać dostęp
obiekt, w tym metodę this.props.history.push.
źródło
withRouter
ponieważ owinąłeś swój komponentBrowserRouter
, który działa tak samo.props
dół do każdego elementu, który obejmujehistory
rekwizyt.Aby użyć React 16.8+ (withHooks) , możesz użyć tego sposobu
Źródło tutaj, aby przeczytać więcej https://reacttraining.com/react-router/web/example/auth-workflow
źródło
Dodaj informacje, aby uzyskać parametry zapytania.
Aby uzyskać więcej informacji o URLSearchParams, sprawdź ten link URLSearchParams
źródło