Loading...
Loading...
Create or review Blazor components (.razor files) with correct architecture. USE FOR: writing new Blazor components that do NOT involve JavaScript interop, implementing parameters and EventCallback, RenderFragment slots, component lifecycle (OnInitializedAsync, OnParametersSet), async patterns, IAsyncDisposable, CancellationToken, CSS isolation, code-behind. DO NOT USE FOR: creating new projects (use create-blazor-project), JavaScript interop or calling browser APIs from Blazor (use use-js-interop), forms and validation (use collect-user-input), prerendering issues (use support-prerendering), HTTP data fetching patterns (use fetch-and-send-data), coordinating state between unrelated components (use coordinate-components).
npx skill4agent add dotnet/skills author-component[Parameter]EventCallback<T>ActionFunc[Parameter]OnParametersSet[Parameter] public T Prop { get; set; }requiredinit[EditorRequired]@if@else@keyIReadOnlyList<T>IEnumerable<T>[Parameter] public RenderFragment? ChildContent { get; set; }
[Parameter] public RenderFragment<TItem>? RowTemplate { get; set; } // generic template@typeparam TItem.razor@code.razor.razor.cspartial classIAsyncDisposableIDisposableDisposeAsync-=StateHasChangedawait.Result.Wait()Task.RunContinueWithThread.StartTask.DelayCancellationTokenSourceSystem.Threading.TimerSystem.Timers.TimerOnInitializedAsyncawait Task.Delay(interval, token)Action<T>async voidawait InvokeAsync(() => { state++; StateHasChanged(); })catchDispatchExceptionAsync_ = InvokeAsync(...)DisposeAsyncObjectDisposedExceptionrequiredinit[Parameter][Parameter]OnParametersSetActionFuncEventCallback<T>Task.Run.Result.Wait()styledata-*catch { throw; }when_ = InvokeAsync(...)async voidDispatchExceptionAsync