Blazor 페이지 새로고침에서 OnParameterSet이 2번 호출되는 문제..

이전에도 비슷한 글을 올린 적이 있었는데…

.NET 7.0에서 해도 같은 결과가 나오네요.

브라우저에서 새로고침 버튼 또는 F5 키를 누르면 OnParameterSet 이벤트가 2번 호출되는 문제입니다…

@page "/counter"

@code {
    [Parameter]
    public int Test { get; set; }

    protected override void OnParametersSet()
    {
        // 두번째 호출될 때 Test값이 0으로 초기화되어 있음..
        Test = 1;
    }
}

필드에서는 어떻게 대응하고 계신지 궁금합니다…

아니면… 그냥 냅두시나요?!

1개의 좋아요

자답합니다…

1회만 로드되도록 하기 위해서는 컴포넌트의 render-mode를 Server로 바꾸는 방법이 있는데,
제가 잘못 수정했습니다.

_Host.cshtml에 정의된 app타입의 render-mode를 수정해야 하는데…

<component type="typeof(App)" render-mode="Server" />

HeadOutlet을 수정했더군요…

    <component type="typeof(HeadOutlet)" render-mode="Server" />

:pushpin: 결론

<component type="typeof(App)" render-mode="ServerPrerendered" />
// 이 부분을 아래와 같이 변경..
<component type="typeof(App)" render-mode="Server" />
5개의 좋아요

블레이저 서버만 해당되는 얘기죠?

2개의 좋아요

Wasm에서는 테스트 안해봤습니다 :grinning:

2개의 좋아요

저도 서버만 사용하는데요.

블레이저 버전에 따라 두 번 호출에서 한번 호출로 변경되었던 것 같습니다.
블레이저 강좌들 중 저 부분을 업데이트 하지 않아 두번 호출하는 것으로 component life-time 을 설명하는 것들이 아직도 꽤 있더군요.

그게 언제부터이고, 어떻게 제어하는 지 한번 정리할라 그랬는데…
떡 본 김에 제사 지낸다고… 한 번 정리해주심이… ^^

4개의 좋아요