😬 Blazor에서 JavaScript 함수 호출


Blazor에서 Lottie.js를 사용하려고보니 여러가지 문제가좀 있었기에 적어둔다.

먼저 JavaScript를 작성하자

_Layout.cshtml

    <!-- Blazor Server SCRIPTS -->
    <script src="_framework/blazor.server.js"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.9.6/lottie.min.js"></script> <--요놈추

index.razor

    <div id="lottieJS"></div>
    <button type="button" @onclick = "loginBtnClick"></button>
    function lottieStart(id, dataNum) {

        var Data = [
            "https://assets6.lottiefiles.com/packages/lf20_ABViugg18Y.json", //TransferFiles 0
        ];
            

        lottie.loadAnimation({
            container: document.getElementById(id.toString()), // the dom element that will contain the animation
            renderer: 'svg',
            loop: true,
            autoplay: true,
            rendererSettings: {
                progressiveLoad:true
            },
            path: Data[dataNum].toString() // the path to the animation json
        });
    }

    function lottieDestroy() {
        lottie.destroy();
    }

Lottie를 시작하는 함수와
애니메이션을 지우는 Destroy 함수를 만들고

index.razor


    @inject IJSRuntime JS


    [Inject]
    private NavigationManager navigationManager { get; set; }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            await JS.InvokeVoidAsync("lottieStart", "lottieJS", 0);
        }
        else
        {
            Console.WriteLine("Render 오류발생!!!!!");
        }
    }

    private async Task loginBtnClick()
    {
        await JS.InvokeVoidAsync("lottieDestroy"); // Animation 삭제
        await JS.InvokeVoidAsync("lottieStart", "lottieJS", 1); // 다른 Animation 추가
        Thread.Sleep(2000);
        navigationManager.NavigateTo("/index"); // 페이지 이동
    }

razor component가 모두 렌더링된 후에
JavaScript함수인 lottieStart를 호출한다.
그것의 Parameter인 태그IDjson 링크주소배열 순번을 넘겨준다.


lottiejs

완성!!!!!

Lottie 홈페이지 https://airbnb.io/lottie/
Lottie github - https://github.com/airbnb/lottie
LottieFiles - https://lottiefiles.com/featured
MSDS - .NET에서 JavaScript 호출

Note: 만들고나니 내것이 아니었다.

Leave a comment