Czy ktoś może wyjaśnić różnicę między
<Route exact path="/" component={Home} />
i
<Route path="/" component={Home} />
Nie znam znaczenia słowa „dokładny”
Czy ktoś może wyjaśnić różnicę między
<Route exact path="/" component={Home} />
i
<Route path="/" component={Home} />
Nie znam znaczenia słowa „dokładny”
Odpowiedzi:
W tym przykładzie nic tak naprawdę. Parametr
exact
pojawia się, gdy masz wiele ścieżek o podobnych nazwach:Na przykład wyobraź sobie, że mamy
Users
komponent, który wyświetla listę użytkowników. Mamy teżCreateUser
komponent służący do tworzenia użytkowników. Adres URLCreateUsers
powinien być zagnieżdżony wUsers
. Więc nasza konfiguracja może wyglądać mniej więcej tak:Teraz problem tutaj, kiedy przejdziemy do
http://app.com/users
routera, przejdzie przez wszystkie zdefiniowane przez nas trasy i zwróci PIERWSZE znalezione dopasowanie. W tym przypadku najpierw znajdzieUsers
trasę, a następnie ją zwróci. Wszystko dobrze.Ale gdybyśmy poszli do
http://app.com/users/create
, ponownie przeszedłby przez wszystkie nasze zdefiniowane trasy i zwrócił PIERWSZE znalezione dopasowanie. Router React wykonuje częściowe dopasowanie, więc/users
częściowo pasuje/users/create
, więc ponownie niepoprawnie zwróciUsers
trasę!Parametr
exact
wyłącza częściowe dopasowanie dla trasy i zapewnia, że zwraca trasę tylko wtedy, gdy ścieżka jest DOKŁADNIE dopasowana do bieżącego adresu URL.Więc w tym przypadku powinniśmy dodać
exact
do naszejUsers
trasy, aby pasowała tylko na/users
:Dokumenty
exact
szczegółowo wyjaśniają i podają inne przykłady.źródło
exact
powinno być moim zdaniem domyślne/admin//users
w komponencie Admin i/admin/users/create
komponencie Root ??? Obecnie mam taką sytuację i typoweexact
rozwiązanie nie działa poprawnie.Krótko mówiąc, jeśli masz wiele tras zdefiniowanych dla routingu aplikacji, otoczonych
Switch
takim komponentem;Następnie musisz umieścić
exact
słowo kluczowe w Trasie, której ścieżka jest również zawarta w innej ścieżce. Na przykład ścieżka główna/
jest zawarta we wszystkich ścieżkach, więc musi miećexact
słowo kluczowe, aby odróżnić ją od innych ścieżek, które zaczynają się od/
. Powód jest również podobny do/functions
ścieżki. Jeśli chcesz użyć innej ścieżki, takiej jak/functions-detail
lub/functions/open-door
która/functions
w niej zawiera , musisz użyćexact
dla/functions
trasy.źródło
Spójrz tutaj: https://reacttraining.com/react-router/core/api/Route/exact-bool
ścisłe: bool
Gdy prawda, będzie pasować tylko wtedy, gdy ścieżka
location.pathname
dokładnie pasuje do .źródło
Najkrótsza odpowiedź brzmi
Spróbuj tego.
źródło
exact
atrybutu / właściwości, a zatem z pewnością nie jest „odpowiedzią”. Powinieneś raczej spróbować odpowiedzieć na pytanie, które jest faktycznie zadawane, zamiast dawać rozwiązanie problemu, którego nie jesteś pewien, czy OP faktycznie ma.