Routable 컴포넌트 주소 설정 관습 공유

블레이저 요소 작성할 때, 페이지 맵핑 경로를 아래와 같이 지정하는 경우가 많습니다.

@page "/admin/users"

또는 아래와 같이 하기도 합니다.

@attribute [Route("/admin/users")]

그런데, 주소가 전부 문자열 상수이고, 블레이저의 컴파일 기능이 아직은 좀 불안한 지라, 사이트 맵이 좀 달라지면, 이 문자열들을 찾는데 빌드가 여러 번 필요할 수도 있습니다.

경로 관리를 좀 용이하게 하기 위해, 아래와 같은 경로 지정 패턴을 제안해 봅니다.

//  Users.razor 

@attribute [Route(Path)]

@code {
   private const string Path = "/admin/users";
   public static string Url() => Path;
}
//  User.razor 

@attribute [Route(Path)]

@code {
   private const string BasePath = "/admin/user";
   private const string UserIdParam = "/{userId:guid}";
   private const string Path = BasePath + UserIdParam;

   public static string Url(Guid id) => BasePath + "/" + id.ToString();
}
// OtherPage.razor

private void MoveTo_Users() =>
   Navication.NavigateTo(AdminUsers.Url());


private void MoveTo_User(Guid userId) =>
   Navication.NavigateTo(AdminUser.Url(userId));

4 Likes