Использование точных и строгих реквизитов - PullRequest
0 голосов
/ 11 сентября 2018

Я работаю с React-Router в React-JS:

<Route> является встроенным компонентом и имеет два разных реквизита: exact и strict

Проблема

Документация не дает четкого определения различий между exact и strict.

Пожалуйста, помогите мне. Документ очень запутанный и неясный на тот момент.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Реквизит ReactRouter strict определяет, есть ли в строгая запись запрошенного пути в pathname, как описано в документации. Например, если вы не хотите обрабатывать маршрут страницы без косой черты, ваш Route можно описать так:

<Route path="/mypath/" strict ... />

Таким образом, путь /mypath не будет обрабатываться с этим Route, а путь /mypath/ будет. Обратите внимание, что в этом режиме этот Route также будет перехватывать другие дочерние маршруты, например, /mypath/childroute, /mypath/childroute/childroute2 и т. Д., Но маршрут не перехватит /mypath?query=.... Подумайте об этом, как если бы вы использовали "string".includes("substring"):

"/mypath".includes("/mypath/")       => false
"/mypath/".includes("/mypath/")      => true
"/mypath/kappa".includes("/mypath/") => true

Опора exact используется для определения, существует ли точно запрошенный путь. Обычно он используется для переноса маршрутов без дочерних маршрутов (например, домашней страницы).

<Route path="/" exact ... />
<Route path="/" ... />

Первый маршрут будет охватывать только такие маршруты, как mydomain.com, mydomain.com/, mydomain.com/?query=... и т. Д. Второй будет охватывать все маршруты, например, mydomain.com и mydomain.com/myroute.

0 голосов
/ 11 сентября 2018

Вариант использования 1

Если вы используете exact и strict вместе, то location.pathname будет совпадать только в точности, как указано в свойствах пути.

Пример:

<Route exact strict path="/one" component={About}/>

Будет соответствовать только /one, но не /one/ и /one/two.

Пример:

<Route exact strict path="/one/" component={About}/>

Будет соответствовать только /one/, но не /one и /one/two.

Вариант использования 2

Если вы используете только strict, то location.pathname совпадет с косой чертой.

Пример:

<Route strict path="/one/" component={About}/>

Будет соответствовать /one/ и /one/two, но не /one.

Вариант использования 3

Если вы используете только exact, то location.pathname будет соответствовать точному пути местоположения.

Пример:

<Route exact path="/one" component={About}/>

Будет соответствовать /one или /one/. Реквизит exact не заботится о конце слэша. Но это не будет соответствовать /one/two.

...