이번 포스팅에서는 블레이저에서 양방향(two-way) 바인딩 과 단방향(one-way) 바인딩이 무엇인지 알아보도록 하겠습니다.
예제를 작성할 razor파일을 생성합니다.
![[c# blazor] 바인딩이란 ? (양방향, 단방향) example레이저](https://blog.kakaocdn.net/dn/bf8YBb/btrHSA7CEqw/MuDJ5FalswNWMK3qEu9jiK/img.png)
//Example.razor
![[c# blazor] 바인딩이란 ? (양방향, 단방향) [c# blazor] 바인딩이란 ? (양방향, 단방향)](https://blog.kakaocdn.net/dn/b4tz6x/btrHT2oqlpU/NVe29QRrNvTDnMYsbCY00K/img.png)
routing 주소를 설정해줍니다.
1) one-way(단방향) 바인딩
@code 단에 들어있는 프러퍼티 값을 UI단에 출력 해보겠습니다.
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 1) one-way(단방향) 바인딩 [c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 1) one-way(단방향) 바인딩](https://blog.kakaocdn.net/dn/c2eifn/btrHVJhpks9/MVOce0lgc2eQnaviaZGXF1/img.png)
원하는곳에 @를 붙혀주면 위 그림과 같은 방향으로 값이 전달 됩니다.
output:
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 1) one-way(단방향) 바인딩 output](https://blog.kakaocdn.net/dn/bVjPLb/btrHTHSk8uu/NklPN1kkRqSrueJTuZFkg0/img.png)
하지만 input창에 우리가 직접 값을 입력한다고 해서,
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 1) one-way(단방향) 바인딩 ui단변경](https://blog.kakaocdn.net/dn/xDA4y/btrHTHY5YI0/sF2FsSB1fSV5fjVZqJ56Dk/img.png)
ExValue값이 변경되지는 않습니다.
왜냐하면 code단에서 UI단으로만 전달되는 단방향(one-way) 바인딩이 적용되어있기 때문입니다.
그렇다면 UI단에서도 코드단으로 데이터를 넘겨주려면 어떻게 할까요?
그때 사용하는 것이 양방향(two-way)바인딩 입니다.
2) two-way(양방향) 바인딩
기존코드를 아래와 같이 변경해주면 끝입니다.
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩 [c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩](https://blog.kakaocdn.net/dn/dBgE9X/btrHVgT4s6i/adpvuM9VMsp30PW3jyp8vk/img.png)
정말 UI단에서 넣은 값이 코드단에 영향을 끼치는지 확인하기 위해 ExValue를 출력하는 부분을 추가해보았습니다.
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩 추가코드](https://blog.kakaocdn.net/dn/EVaem/btrHUM6Heg8/VPKQuJLXsmsNV6amKfMOxk/img.png)
output:
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩 [c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩](https://blog.kakaocdn.net/dn/RLj7W/btrHXVaz0eQ/EZgevriOnCKWjUyuVHek80/img.webp)
출력이 잘 되는것처럼 보입니다.
하지만 잘 보시면 즉각적으로 바뀌지 않고, 마우스를 클릭해줘야지만 바뀌는 현상이 있습니다.
이는 디폴트로 포커스가 input을 벗어날때 바인딩을 적용되도록 설정이 되어있기 때문입니다.
우리가 명시적으로 적어주진 않았지만, 내부적으로 아래와 같은 코드가 적용 되어 있는 것입니다.
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩 onchange](https://blog.kakaocdn.net/dn/bRXDWv/btrHQILisyJ/rTVzDWzM0RZAfMO4wnWxF1/img.png)
해당 부분을 "onintput"으로 변경하여, 즉각적으로 반응하도록 수정해보겠습니다.
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩 oninput](https://blog.kakaocdn.net/dn/baLgqT/btrHVg7Boe9/1p2eXIO3xc5Yda9CtXiqZ0/img.png)
output:
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩 [c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩](https://blog.kakaocdn.net/dn/bbc5OT/btrHTq4GEdF/0TO5YBRrXaCAmWBdLUINS1/img.webp)
+ 추가
참고로 @bind-value를 @bind로 축약해서도 자주 사용하니 참고하기 바랍니다.
![[c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩 [c# blazor] 바인딩이란 ? (양방향, 단방향) - undefined - 2) two-way(양방향) 바인딩](https://blog.kakaocdn.net/dn/baUGvj/btrHUix4ywM/DRHa3jKj946UX3nzMWF9Rk/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] IJSRuntime이란? (자바스크립트 사용) (0) | 2022.07.25 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.