Files
Atomx/Atomx.Admin/Atomx.Admin.Client/Utils/LocalizedComponentBase.cs
2025-12-06 13:30:17 +08:00

32 lines
933 B
C#

using Atomx.Admin.Client.Services;
using Microsoft.AspNetCore.Components;
namespace Atomx.Admin.Client.Utils
{
/// <summary>
/// 继承此基类的组件会自动订阅 LanguageProvider 的语言变更事件并在变更时重新渲染。
/// </summary>
public abstract class LocalizedComponentBase : ComponentBase, IDisposable
{
[Inject]
protected LanguageProvider LanguageProvider { get; set; } = null!;
protected override void OnInitialized()
{
base.OnInitialized();
LanguageProvider.OnLanguageChanged += LanguageChangedHandler;
}
private void LanguageChangedHandler()
{
// 在组件上下文中安全调用 StateHasChanged
_ = InvokeAsync(StateHasChanged);
}
public void Dispose()
{
LanguageProvider.OnLanguageChanged -= LanguageChangedHandler;
}
}
}