由于 Blazor 3.1 Preview 2 应该可以防止Blazor 中链接的默认导航行为,如本答案中所述。
但是,这段代码:
<NavLink href="" Match="Match" @onclick:preventDefault @onclick="()=>LinkAction()" >
Do something
</NavLink>
Run Code Online (Sandbox Code Playgroud)
给出这个错误:
组件参数 'onclick' 用于该组件两次或多次。参数必须唯一(不区分大小写)
这是为什么?
尽管 HTML<A>标记和 BlazorNavLink组件的最终结果大致相同,但@onclick:preventDefault语法仅适用于 HTML 版本,不适用于 Blazor 组件。
史蒂夫桑德森在这里解释了这一点:
恐怕没有一种机制可以将诸如 @*:preventDefault 之类的任意指令属性作为组件参数传递,因此预计这不适用于 NavLink。
Steve 还给出了一个可能的解决方案:
但是,您可以从添加“阻止默认”行为的 NavLink 继承您自己的子类。例如,创建 NavLinkPreventDefault.razor,包含以下内容:
Run Code Online (Sandbox Code Playgroud)@inherits NavLink <a @attributes="@AdditionalAttributes" class="@CssClass" @onclick:preventDefault> @ChildContent </a>现在您可以使用代替来获得您想要的行为。
| 归档时间: |
|
| 查看次数: |
1898 次 |
| 最近记录: |