인프런 커뮤니티 질문&답변

Anddy.Hong님의 프로필 이미지
Anddy.Hong

작성한 질문수

ASP.NET core Blazor 디테일 강의 - 초급편

인덱스 레이저 페이지에 5가지 변수와 void 함수 추가, 기본값 지웠을때 에러 확인, 리스트에 클래스를 만들어 보기, 람다식과 형식 지정 리턴 함수 만들기

button click에 연결한 함수 실행시, 다른 태그에 연결한 동일 함수가 실행되는 이유.

작성

·

397

0

<h5>@AddStr("1234")</h5>

<h6>@AddStr("5678")</h6>

<p>P 태그</p>

<span>SPAN 태그</span>

<button @onclick="@(e => AddStr("아멘"))">눌러보기</button>

 

상기와 같이 태그를 작성한 경우,

실행 후 button을 클릭하면 h5, h6에 연결한 함수들 까지 같이 실행되어 Console에 찍힙니다. 그 이유를 모르겠네요. 설명 부탁드립니다.

물론 함수는 아래와 같이 정의했습니다.


private string AddStr(string p1)

{

string strget = p1 + " 대한민국 ^^";

Console.WriteLine(strget);

return strget;

}

답변 1

0

백승철님의 프로필 이미지
백승철
지식공유자

이렇게 생각하시면 됩니다.

public string AddStr 로 하셨기 때문에 저 값은 함수보다는 변수에 가깝습니다.

버튼에서 람다 식으로 AddStr 을 실행 시키고 나면 변수에 저장되어 있는 현재 값이 업데이트가 되고 블레이저는 C#이 붙은 지점을 새롭게 작성합니다. 그때 <h5>@AddStr("1234")</h5> 이라고 적어주셨는데 이 코드의 뜻은 "페이지가 렌더링 될때 마다 Addstr에 1234라는 값을 넣고 변수에서 처리한 값을 h5 태그 안에 출력한다!" 입니다. <h6> 안도 마찬가지로 생각해 주시면 됩니다.

 

즉, 버튼을 누를 때 마다 Addstr 값이 업데이트 되고 이를 감지한 블레이저에서 페이지를 다시 렌더링 하기 때문에 h5및 h6에 있는 변수가 계속해서 실행되는 것입니다.

Anddy.Hong님의 프로필 이미지
Anddy.Hong

작성한 질문수

질문하기