Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ant-design-blazor/demo-reuse-tabs

A reuse tabs demo for Ant Design Blazor
https://github.com/ant-design-blazor/demo-reuse-tabs

blazor blazor-server blazor-webassembly csharp dotnet multipage-spa reuse-tab routing

Last synced: 3 months ago
JSON representation

A reuse tabs demo for Ant Design Blazor

Awesome Lists containing this project

README

        

# ReuseTabs

[Ant Design Blazor](https://github.com/ant-design-blazor/ant-design-blazor) 多标签页组件。

[English](README.md) | 简体中文

# 实例

https://antblazor.com/demo-reuse-tabs/

# 截图

![demo](./assets/reuse-tabs-demo1.gif)

# 如何使用

## 前置条件

先按照[ Ant Design 的文档 ](https://antblazor.com/docs/introduce)安装 AntDesign 组件 Nuget 包并在 IOC 容器注册依赖。

## 基础使用

1. 首先,使用 `dotnet new` 命令创建一个 Blazor 项目。

2. 修改项目中的 `App.razor` 文件,使用 `` 包裹 `RouteView`。

```diff


+

+

...

```

3. 修改 `MainLayout.razor` 文件, 增加 `ReuseTabs` 组件。注意 `@Body` 是不需要的。

```diff
@inherits LayoutComponentBase



-

- About
-

-

- @Body
-

+

```

## 自定义标签标题

- 如果只是文本标题,只需在页面上增加 `ReuseTabsPageTitle` 特性。

```diff
@page "/counter"
+ @attribute [ReuseTabsPageTitle("Counter")]
```

- 如果需要使用模板来设置复杂的标题, 则需要页面组件实现 `IReuseTabsPage` 接口和 `GetPageTitle` 方法,就返回动态的标题了。

```diff
@page "/order/{OrderNo:int}"
+ @implements IReuseTabsPage

Hello, world!

@code{

[Parameter]
public int OrderNo { get; set; }

+ public RenderFragment GetPageTitle() =>
+ @


+ Order No. @OrderNo
+

+ ;
}
```

## 身份验证和授权

ReuseTabs 可以集成 Blazor 的身份验证组件。

1. 先按照官方文档[《ASP.NET Core Blazor 身份验证和授权》](https://docs.microsoft.com/zh-cn/aspnet/core/blazor/security/?view=aspnetcore-6.0&WT.mc_id=DT-MVP-5003987),添加身份认证组件。

2. 安装我们的 `AntDesign.Components.Authentication` Nuget 包。

```bash
$ dotnet add package AntDesign.Components.Authentication
```

3. 用 `` 包裹 `AuthorizeReuseTabsRouteView`。

```diff



-
+



Sorry, there's nothing at this address.






```

其他的配置与官方文档和 ReuseTabs 相同。

## 更多配置

你可以通过使用 `ReuseTabsPage` 特性来设置更多选项。

```diff
@page "/counter"
+ @attribute [ReuseTabsPage(Title = "Home", Closable = false)]
```

如果你想忽略一些页面, 可以在 `ReuseTabsPage` 设置 `Ignore=true`。

```diff
@page "/counter"
+ @attribute [ReuseTabsPage(Ignore = true)]
```

更多配置请查看 API。

## API

### ReuseTabsPageAttribute 特性

| 属性 | 描述 | 类型 | 默认值 |
| --- | --- | --- | --- |
| Title | 消失在tab上的固定标题 | string | current path |
| Ignore | 如果 `Ignore=true`, 页面将不会显示在tab中,而是跟原来一样在整个页面展示。 | boolean | false |
| Closable | 是否显示关闭按钮并且不可被关闭。 | boolean | false |
| Pin | 是否固定加载页面,并不可被关闭。一般用于主页或默认页。 | boolean | false |

### ReuseTabsService 服务,在页面组件中注入使用。

| 方法 | Description |
| --- | --- |
| ClosePage(string key) | 关闭指定key的页面,key 就是 url。
| CloseOther(string key) | 关闭除了指定key的页面,或者设置了 `Cloasable=false` 或 `Pin=true` 的页面。
| CloseAll() | 关闭除了设置了 `Cloasable=false` 或者 `Pin=true` 的页面。
| CloseCurrent() | 关闭当前页面。 |
| Update() | 更新 Tab 状态。当 `GetPageTitle()` 中引用的变量发生变化时,需要调用 `Update()` 来更新 tab 的显示。 |