심층 Blazor — 수명 주기 메서드 없이 Blazor 구성 요소 만들기
8232 단어 blazordotnet5aspnetcoredotnet
이 블로그 게시물에서는 수명 주기 메서드와 면도기 파일 구문 없이 Blazor 구성 요소를 만든 방법을 공유할 것입니다. 우리는 이것을 클래스 전용 구성 요소 접근 방식이라고 말할 수 있지만 수명 주기 메서드는 없습니다. 많은 분들이 이러한 컴포넌트 렌더링 방식을 알고 계셨겠지만, 이 방법을 공유하면 모르는 다른 사람들에게 도움이 될 것 같았습니다. Blazor 소스 코드에 사용된 다양한 구성 요소를 검토한 후에 이 접근 방식을 찾았습니다.
이 접근 방식을 시연하기 위해 간단한 Rating 구성 요소를 만들 것입니다.
Rating.cs라는 클래스를 만들고 있습니다. 앞에서 언급했듯이 이것은 클래스 전용 구성 요소이므로 Razor 구성 요소 항목을 생성하지 않습니다.
public class Rating
{
}
이 접근 방식의 첫 번째 단계는 IComponent 인터페이스로 Rating 클래스를 구현하는 것입니다.
public class Rating : IComponent
{
}
이제 Rating 클래스는 IComponent 인터페이스의 두 가지 메서드를 구현해야 합니다.
Attach 메서드에서 나중에 사용할 수 있도록 RenderHandle 인스턴스를 가져와서 저장해야 합니다. 이제 코드는 아래와 같습니다.
public class Rating : IComponent
{
private RenderHandle _renderHandle;
void IComponent.Attach(RenderHandle renderHandle)
{
_renderHandle = renderHandle;
}
}
이제 SetParametersAsync 메서드를 처리해야 합니다. 이 메서드는 아래 두 가지 중요한 책임을 처리해야 합니다.
이제 최종 평가 구성 요소는 아래와 같습니다.
public class Rating : IComponent
{
private RenderHandle _renderHandle;
[Parameter]
public int Value { get; set; }
void IComponent.Attach(RenderHandle renderHandle)
{
_renderHandle = renderHandle;
}
Task IComponent.SetParametersAsync(ParameterView parameters)
{
foreach(var entry in parameters)
{
switch (entry.Name)
{
case nameof(Value):
Value = (int)entry.Value;
break;
}
}
_renderHandle.Render(RenderDelegate);
return Task.CompletedTask;
}
private void RenderDelegate(RenderTreeBuilder builder)
{
int max = Math.Min(Value, 5);
int seq = 1;
for (var i = 0; i < max; i++)
{
builder.OpenElement(seq++, "span");
builder.AddAttribute(seq++,
"style", "color:#f49813;font-size:30px");
builder.AddContent(seq++, "★");
builder.CloseElement();
}
}
}
이제 Rating 구성 요소는 아래와 같이 간단하게 응용 프로그램에서 사용할 수 있습니다.
출력은 아래와 같습니다.
폐쇄
Blazor 구성 요소를 만드는 여러 방법 중 하나를 배웠기를 바랍니다. 이 게시물에서 나는 이것을 최선의 접근 방식으로 권장하지도 않고 성능 이점을 위해 이 접근 방식을 사용하도록 주장하지도 않습니다. 저는 이 접근 방식이 간단한 Blazor 구성 요소를 만드는 간단하고 깨끗한 방법이라는 것을 알았습니다.
이 게시물이 도움이 되었다면 댓글을 남기거나 이 게시물을 공유하세요. 행복한 코딩!!
Reference
이 문제에 관하여(심층 Blazor — 수명 주기 메서드 없이 Blazor 구성 요소 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/madhust/blazor-in-depth-create-blazor-component-without-lifecycle-methods-2786텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)