razor컴포넌트는 사용할때 제네릭타입을 추론시키지 못하기 때문에 지금껏 이런 함수를 덧붙여 쓰곤 했는데
각각의 페이지에 매번 같은 유틸리티성 함수들을 덧붙여야하는 문제가 있어 함수를 재사용하는 방법을 찾았으나 오만 삽질만 하고 마땅한 정보가 나오지 않았다.
https://learn.microsoft.com/ko-kr/aspnet/core/mvc/views/razor?view=aspnetcore-7.0
그러다 어찌어찌 조사하면서 나온것이 razor구문으로 @<tag>...</tag> 형태의 람다식을 사용할수 있다는것과
뭔 람다 델리게이트 형태가 Func<dynamic, object> 라는게 이상해서 대충 눈치로 까보니 RenderFragment에도 대응시킬수 있다는걸 알아내
위와같이 작성하는 패턴을 발견할수 있었다.
RenderFragment는 델리게이트지만 개발자가 직접 파라미터 넣어 호출하는게 아니라 단순 표기를 통해 Current RenderTreeBuilder를 암시적으로 적용해주어
처음코드를 아래와같이 단순화 시킬수 있게된다.
p.s 1) 개인적으로 UI-UX프로그래밍에서 유틸리티 코드재사용같은건 숨쉬듯 자연스러운 디자인패턴이라 생각하는데
이렇게 정보도 없고 많은 조사와 응용이 들어가야 될줄은 몰라 당황스러웠다. 뭐 Blazor의 의도는 함수를 호출할게 아니라 html태그를 쓰는게 메인인것같은데,
그럴거면 일단 태그의 제네릭 추론까지는 만들어주면 좋겠다.
p.s 2) 골아파서 ChatGPT에다가 물어봤는데,
듣도보도 못한 방법을 명료하게 설명하길레 혹했드만, 되도않는 뇌피셜이었다.
말도안되는 코드를 html문법과 blazor문법에 맞춰 그럴싸하게 사기치고있다.
댓글 0