이번 포스팅에서는 블레이저에서 IJSRuntime을 통해 자바스크립트를 사용하는 방법에 대해 알아보겠습니다.
아래 예시처럼 버튼을 클릭하면 글자가 바뀌는 UI를 구성해볼건데요.
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) [c# blazor] IJSRuntime이란? (자바스크립트 사용)](https://blog.kakaocdn.net/dn/Ix5ci/btrIaQHcdxI/YKgkULbgVIKX6SiVwFktZk/img.webp)
먼저 예제 코드를 작성할 Razor파일을 생성합니다.
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) razor파일 생성](https://blog.kakaocdn.net/dn/WfIFY/btrH5eI37ot/Zm5KnK8VuW3qPkEFThKP3k/img.png)
//JavascriptTest.razor
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) [c# blazor] IJSRuntime이란? (자바스크립트 사용)](https://blog.kakaocdn.net/dn/ovP1L/btrH31DbvVa/66URcRydOwakSxE4y9E65k/img.png)
간단하게 UI를 구성해주고 버튼을 클릭하면 실행될 ChangeText()함수를 만들어 보았습니다.
빨간 사각형 부분이 자바스크립트와 연동시킬 함수를 넣는 부분인데요.
그에 앞서 c#코드에 자바스크립트 코드를 어떻게 작성할까요?
//_Layout.cshtml
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) [c# blazor] IJSRuntime이란? (자바스크립트 사용)](https://blog.kakaocdn.net/dn/O2eYY/btrH76cHClv/1f6oJplMse2svC0KpKHWR1/img.png)
_Layout.cshtml에 들어가서 <script>문을 생성한 후 함수를 작성하면 됩니다.
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) 함수작성](https://blog.kakaocdn.net/dn/bbK5DC/btrH1zGzjcu/6tqoLNvagWrN5CWn2iH2Y0/img.png)
StartJS라는 이름의 함수로 작성을 해보았는데요, id값을 인자로 받고 있는 형태입니다.
즉 c#코드에서 id값을 넘겨 받아 getElementById함수를 통해 수정하고자하는 태그 위치를 알아낸 후,
.innerText로 텍스트를 변경 해주는 코드입니다.
그렇다면 이렇게 생성한 자바스크립트 코드를 어떻게 c#코드와 연결 시킬까요?
그때 사용하는 것이 바로 이번 포스팅의 주제이기도 한 IJSRuntime입니다.
//JavascriptTest.razor
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) [c# blazor] IJSRuntime이란? (자바스크립트 사용)](https://blog.kakaocdn.net/dn/bAu25t/btrH7460QQz/lUxq2haH3afGxuHsm8zdK0/img.png)
IJSRuntime을 inject시키고 편의상 이름은 JS로 설정하였습니다.
그리고 빨간사각형 같이 작성해주시면 되는데요.
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) [c# blazor] IJSRuntime이란? (자바스크립트 사용)](https://blog.kakaocdn.net/dn/ngt2C/btrH3cydt6U/0Jz0YvrYBee1YhTp4s6u6k/img.png)
<object>를 반환하는 형태의 함수입니다.
첫번째 인자는 사용할 자바스크립트의 함수명을 적는곳이고, 두번째는 그 자바스크립트 함수의 인자로 무엇을 넣을지 정해주는 것입니다.
여기선 변경하고자 하는 태그의 id값을 넘겨주어야 하니 JS를 넘겨주면 끝입니다.
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) id값](https://blog.kakaocdn.net/dn/cxjjrT/btrH1yASlkF/xUCMDLVOwBQcc1Qqpxtej1/img.png)
+ 보너스
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) - undefined - + 보너스 [c# blazor] IJSRuntime이란? (자바스크립트 사용) - undefined - + 보너스](https://blog.kakaocdn.net/dn/Q6Ii9/btrH099dtd8/hMgI2TTsQW3kZi4MnBOtf0/img.webp)
이번엔 좀더 나아가서 글자를 입력한 값을 출력하는 UI를 만들어보겠습니다.
//JavascriptTest.razor
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) - undefined - + 보너스 코드수정](https://blog.kakaocdn.net/dn/P12j7/btrH32oAhdN/VgPPDRmQHerVKRJEOMHqB1/img.png)
기존 코드에서 input태그를 추가하였습니다.
이때 ExText라는 빈문자열 필드를 만들고, 이 값을 input태그와 양방향 바인딩을 시켰습니다.
(바인딩을 모르시는 분은 해당 포스팅 참조)
즉, input창에 값을 입력하면 그 값이 ExText에 담길 것이고 ExText를 자바스크립트 함수의 인자로 넘겨주는 구조인것입니다.
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) - undefined - + 보너스 [c# blazor] IJSRuntime이란? (자바스크립트 사용) - undefined - + 보너스](https://blog.kakaocdn.net/dn/C0Z7O/btrH1CEbEAh/Zi34BCpEYDQjDbxYU6r5bk/img.png)
그렇다면 기존 자바스크립트 인자에 넣을 자리를 하나 더 만들어 줘야 겠지요?
// _Layout.cshtml
자바스크립트 함수에도 인자 자리를 하나 늘려줍니다.
![[c# blazor] IJSRuntime이란? (자바스크립트 사용) - undefined - + 보너스 자바스크립트수정](https://blog.kakaocdn.net/dn/dHEw8G/btrIbNDr0qW/JVPBGUeApgqcDl93g6hbVk/img.png)
'c# > blazor' 카테고리의 다른 글
[c# blazor] NavigationManager LocationChanged 이벤트란? (0) | 2022.07.27 |
---|---|
[c# blazor] NavigateTo를 이용한 특정 페이지 이동방법 (0) | 2022.07.26 |
[c# blazor] c# 코드 비하인드 파일 생성하는 방법 (0) | 2022.07.25 |
[c# blazor] 바인딩이란 ? (양방향, 단방향) (0) | 2022.07.22 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.