ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cascading Parameter
    웹 서버/Blazor 입문 2022. 5. 19. 23:57

    1. 사용하는 이유

    User.razor

    <ShowUser Users="_users" CallbackTest="CallbackTestFunc" @ref="_showUser"></ShowUser>

    ShowUser.razor를 컴포넌트로 사용하고 싶을 때는 위와 같은 한 줄의 코드로 연동을 할 수 있다.

     

    <ShowUser Users="_users" CallbackTest="CallbackTestFunc" @ref="_showUser"></ShowUser>
    <ExctUser Users="_users" CallbackTest="CallbackTestFunc" @ref="_showUser"></ExctUser>
    <GiveUser Users="_users" CallbackTest="CallbackTestFunc" @ref="_showUser"></GiveUser>
    ...

    그런데 위와같이 컴포넌트가 필요할 때 마다 User.razor와 연동을 하게 된다면 이는 제법 번거로운 작업이 될 수 있다.

    그래서 다수의 컴포넌트에 대해 공통된 연동 작업을 한 번에 처리하기 위해 Cascading Parameter를 사용한다.

     

    2. 사용방법

    User.razor

    <CascadingValue Name="ThemeColor" Value="_selectedColor">
        <!-- 연동할 컴포넌트의 자리 -->
        <ShowUser Users="_users" CallbackTest="CallbackTestFunc" @ref="_showUser"></ShowUser>
    </CascadingValue>
    @code {
        string _selectedColor = "Green";
        List<string> _options = new List<string>() { "Green", "Red", "Blue" };

    우선 위의 두 코드블럭을 기존의 User.razor에 추가한다. 인자 중에서  Name과 Value가 있는데 Name은 사용할 캐스캐이딩 파라미터의 이름을 구분해주는 역할이고, Value는 코드에서 연동할 변수를 넣어주면 된다.

     

    ShowUser.razor

    @code {
        [CascadingParameter (Name = "ThemeColor")]
        string _color { get; set; }

    그리고 ShowUser.razor에는 CascadingParameter를 정의한다.

     

    3. 사용예시

    ShowUser.razor

    <ul class="list-group">
        @foreach (UserData user in Users)
        {
            <li @key="user" class="list-group-item">
                <button type="button" class="btn btn-link" @onclick="(()=>KickUser(user))">ban</button>
                <label style="color:@_color">@user.Name</label>
            </li>
        }
    </ul>

    가시적인 결과를 확인해보기 위해서 Cascading Parameter로 정의된 6번째 줄의 @_color로 코드와 연동해본다.

     

    User.razor

    <label>Theme Color:</label>
    <select class="form-control" @bind="_selectedColor">
        @foreach (var option in _options)
        {
            <option value="@option">
                @option
            </option>
        }
    </select>

     

    실행결과.

    초록색 글자
    빨간색 글자로 변경

     

    참고로 Cascading Parameter는 User의 자식 컴포넌트인 ShowUser컴포넌트 뿐 아니라 ShowUser의 자식 컴포넌트 또 자식의 자식 컴포넌트 까지 모두 적용된다.

    '웹 서버 > Blazor 입문' 카테고리의 다른 글

    Templated Component  (0) 2022.05.20
    Parameter, Ref, EventCallback  (0) 2022.04.27
    Binding  (0) 2022.04.25
Designed by Tistory.