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:
obiekty historyczne mają zazwyczaj następujące właściwości i metody:
Podczas nawigacji możesz przekazywać rekwizyty do obiektu historii, takiego jak
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
lub podobnie dla Link
komponentu lub Redirect
komponentu
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
a następnie w komponencie renderowanym z /template
trasą, możesz uzyskać dostęp do przekazanych rekwizytów jak
this.props.location.state.detail
Należ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:
withRouter
Możesz uzyskać dostęp do właściwości obiektu historii i najbliższego
<Route>'s
dopasowania za pomocą withRouter
komponentu wyższego rzędu. withRouter
ponownie renderuje swój komponent za każdym razem, gdy trasa zmienia się z tymi samymi rekwizytami, co <Route>
render props: { match, location, history }
.
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');