Как запретить навигацию по умолчанию для компонента Blazor NavLink - PullRequest
1 голос
/ 12 марта 2020

Начиная с Blazor 3.1 Preview 2 должна быть возможность предотвратить поведение навигации по умолчанию для ссылок в Blazor, как и , рассмотренное в этом ответе .

Однако это код:

<NavLink href="" Match="Match" @onclick:preventDefault @onclick="()=>LinkAction()" >
Do something
</NavLink>

выдает эту ошибку:

Параметр компонента onclick используется два или более раз для этого компонента. Параметры должны быть уникальными (без учета регистра)

Почему это так?

1 Ответ

1 голос
/ 12 марта 2020

Хотя результат net тега HTML <A> и компонента Blazor NavLink примерно одинаков, синтаксис @onclick:preventDefault работает только для версии HTML, но не для компонентов Blazor .

Стив Сандерсон объясняет это здесь :

Боюсь, что нет механизма для передачи через произвольные атрибуты директивы, такие как @ *: предотвращение утечки в качестве параметров компонента, поэтому это не должно работать в NavLink.

Стив также предлагает возможное решение:

Однако вы можете унаследовать свой собственный подкласс от NavLink. это добавляет поведение «предотвратить по умолчанию». Например, создайте NavLinkPreventDefault.razor, содержащий это:

@inherits NavLink 
<a @attributes="@AdditionalAttributes" class="@CssClass" @onclick:preventDefault>
    @ChildContent 
</a> 

Теперь вы можете использовать вместо того, чтобы получить желаемое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...