Nie mogę znaleźć sposobu, aby zaktualizować parametry zapytania za pomocą routera reagującego bez użycia <Link/>
. hashHistory.push(url)
nie wydaje się rejestrować parametrów zapytania i nie wydaje się, że można przekazać obiekt zapytania lub cokolwiek jako drugi argument.
Jak zmienić adres URL z /shop/Clothes/dresses
na /shop/Clothes/dresses?color=blue
w routerze reagującym bez użycia <Link>
?
Czy onChange
funkcja jest naprawdę jedynym sposobem na nasłuchiwanie zmian w zapytaniach? Dlaczego zmiany zapytań nie są automatycznie wykrywane i reagowane na zmiany parametrów?
reactjs
react-router
claireablani
źródło
źródło
Odpowiedzi:
W ramach
push
metodyhashHistory
można określić parametry zapytania. Na przykład,lub
Możesz sprawdzić to repozytorium, aby uzyskać dodatkowe przykłady użycia
history
źródło
router.push({ pathname: '/path', state: { color: 'blue', size: 10 }, });
Przykład z użyciem pakietów act-router v4, redux-thunk i interact-router-redux (5.0.0-alpha.6).
Gdy użytkownik korzysta z funkcji wyszukiwania, chcę, aby mógł wysyłać koledze łącze do adresu URL z tym samym zapytaniem.
źródło
react-router-redux
jest przestarzałe<Redirect>
tag, link do strony z dokumentamiwithReducer
HOC, co da cihistory
rekwizyt. A potem możesz biechistory.push({ search: querystring }
.react-router-redux
możesz użyć tego,connected-react-router
co nie jest przestarzałe.Odpowiedź Johna jest poprawna. Kiedy mam do czynienia z parametrami, potrzebuję również
URLSearchParams
interfejsu:Może być również konieczne owinięcie komponentu
withRouter
HOC, np.export default withRouter(YourComponent);
.źródło
withRouter
jest HOC, a nie dekoratoremźródło
Od DimitriDushkin na GitHub :
lub
źródło
Używanie modułu ciągu zapytania jest zalecane, gdy potrzebujesz modułu do łatwego analizowania ciągu zapytania.
Tutaj przekierowuję z powrotem do mojego klienta z serwera Node.js po pomyślnym uwierzytelnieniu Google-Passport, które przekierowuje z powrotem z tokenem jako parametrem zapytania.
Analizuję go za pomocą modułu ciągu zapytania, zapisuję go i aktualizuję parametry zapytania w adresie URL za pomocą wypychania z reakcji-router-redux .
źródło
Wolę skorzystać z poniższej funkcji, czyli
ES6
stylu:źródło
Można to również zapisać w ten sposób
źródło