• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

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

22.12.01 10:56 작성 조회수 320

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에 있는 변수가 계속해서 실행되는 것입니다.