Может кто-нибудь объяснить разницу между
<Route exact path="/" component={Home} />
и
<Route path="/" component={Home} />
Я не знаю значение слова "точный"
reactjs
react-router
react-router-dom
глинистый сланец
источник
источник
Ответы:
В этом примере ничего особенного. Параметр
exact
вступает в действие, когда у вас есть несколько путей с одинаковыми именами:Например, представьте, что у нас есть
Users
компонент, отображающий список пользователей. У нас также естьCreateUser
компонент, который используется для создания пользователей. URL дляCreateUsers
должен быть вложен вUsers
. Таким образом, наша установка может выглядеть примерно так:Теперь проблема здесь, когда мы идем к
http://app.com/users
маршрутизатору, пройдемся по всем нашим определенным маршрутам и вернем первое найденное совпадение. Так что в этом случае онUsers
сначала найдет маршрут, а затем вернет его. Все хорошо.Но, если бы мы пошли на
http://app.com/users/create
это, он снова прошел бы через все наши определенные маршруты и вернул ПЕРВОЕ совпадение, которое он нашел. Маршрутизатор React выполняет частичное сопоставление, поэтому/users
частичное сопоставление приводит к/users/create
неправильному возвращениюUsers
маршрута!Параметр
exact
отключает частичное сопоставление для маршрута и гарантирует, что он возвращает маршрут, только если путь является ТОЧНЫМ совпадением с текущим URL.Поэтому в этом случае мы должны добавить
exact
к нашемуUsers
маршруту, чтобы он совпадал только с/users
:Документы
exact
подробно объясняют и приводят другие примеры.источник
exact
по умолчанию должен быть по моему мнению/admin//users
в виду компонент Admin и компонент/admin/users/create
Root ??? У меня сейчас такая ситуация и типовоеexact
решение не работает должным образом.Короче говоря, если у вас есть несколько маршрутов, определенных для маршрутизации вашего приложения, заключенных в
Switch
такой компонент;Затем вы должны указать
exact
ключевое слово для маршрута, путь которого также включен в путь другого маршрута. Например, домашний путь/
включен во все пути, поэтому он должен иметьexact
ключевое слово, чтобы отличать его от других путей, которые начинаются с/
. Причина также похожа на/functions
путь. Если вы хотите использовать другой путь маршрута, такой как/functions-detail
или/functions/open-door
который включает/functions
в себя, то вам нужно использоватьexact
для/functions
маршрута.источник
Посмотрите здесь: https://reacttraining.com/react-router/core/api/Route/exact-bool
точный: bool
При значении true будет совпадать, только если путь совпадает с
location.pathname
точным.источник
Самый короткий ответ
Пожалуйста, попробуйте это.
источник
exact
атрибута / реквизита и, следовательно, не является «ответом». Вы должны попытаться ответить на вопрос, который на самом деле задается, вместо того, чтобы дать решение проблемы, которую вы не уверены в том, что на самом деле OP имеет.