언어 및 도구들 공부/React

HTML - value VS JSX - defaultValue

Dr.Mlem 2024. 11. 25. 17:33
Q1.
HTML만의 상황에서 설명해줘. HTML 구조에서 input 태그가 가질 수 있는 value 속성이, input 태그에 설정될 기본값인가? JS나 React의 경우 말고, 순수 HTML 문서에 대한 경우에 대해서 말해줘
 
 
 

A1.

ChatGPT의 말:
 
 

순수 HTML에서 <input> 태그의 value 속성은 기본값을 설정하는 속성입니다. 사용자가 입력 필드에 값을 입력하거나 수정하기 전에, HTML 문서가 처음 로드될 때 해당 입력 필드에 표시되는 값이 됩니다.


HTML에서 value 속성의 역할

1. 기본값 설정

  • value 속성은 HTML 문서가 로드될 때 입력 필드에 표시되는 기본값을 설정합니다.
  • 사용자가 입력 필드의 값을 수정하면 value 속성의 값은 브라우저의 메모리에 저장된 현재 값으로 바뀝니다.

예를 들어:

<input type="text" value="Hello World">
  • 페이지가 처음 로드되면 입력 필드에는 Hello World라는 텍스트가 기본적으로 표시됩니다.
  • 사용자가 이 값을 수정하면 화면에 보이는 값이 바뀌지만, HTML 문서의 원래 value 속성 값은 그대로 남아 있습니다.

2. 사용자가 입력한 값과 value 속성

  • 사용자가 입력 필드에 값을 입력하거나 수정하면 **현재 값(Current Value)**은 바뀌지만, value 속성의 원래 값은 그대로 유지됩니다.
  • 브라우저에서 현재 값은 내부적으로 관리됩니다.

예:

<input type="text" value="Default Text">

 

  • 페이지 로드 시: value="Default Text"이고, 입력 필드에도 "Default Text"가 표시됨.
  • 사용자가 "New Text"로 변경:
    • 표시되는 값: "New Text"
    • HTML의 value 속성 값: 여전히 "Default Text"

3. 초기화와 기본값

  • 사용자가 입력한 값을 삭제하고 입력 필드를 리셋하면, <input> 태그의 value 속성에 설정된 기본값이 다시 입력 필드에 표시됩니다.
  • 예를 들어, <form> 태그 내에서 reset 버튼을 누르면 초기값으로 돌아갑니다:
<form>
  <input type="text" value="Default Value">
  <button type="reset">Reset</button>
</form>

사용자가 값을 수정했더라도 Reset 버튼을 누르면 입력 필드는 Default Value로 돌아갑니다.


4. 기본값 없이 <input>을 사용할 때

  • value 속성이 없는 경우, 입력 필드는 비어 있는 상태로 표시됩니다.
<input type="text">
  • 위의 경우, 입력 필드에는 아무 값도 표시되지 않습니다.

요약

  1. HTML에서 value는 기본값으로 동작합니다.
  2. value 속성은 정적입니다. 사용자가 입력한 값을 변경해도 HTML 문서 내의 value 속성 값은 변하지 않습니다.
  3. 리셋 동작이 발생할 경우 입력 필드는 다시 value 속성에 설정된 기본값으로 돌아갑니다.

즉, HTML만 사용한 경우에서 <input>의 value는 입력 필드에 설정되는 초기값입니다. 이 초기값은 사용자가 입력 필드의 값을 수정해도 HTML의 value 속성에는 영향을 주지 않습니다.

 
 
 
 
Q2.
순수 HTML input태그에서 쓰던 value 속성과 같은 내용을 JSX 안의 HTML 태그 안에서 쓰려고 할 때에는, defaultValue 라는 이름으로 속성을 주면 되는건가? React 안에서의 value 속성에 대한 설명은 하지 말고, JSX에서의 input 태그가 가지는 defaultValue라는 속성과, HTML에서의 input태그가 가지는 value 속성의 연관성에 대해서만 설명해줘.
 
 
 
A2.
ChatGPT의 말:
 
 

HTML의 <input> 태그에서 사용하는 value 속성과 React의 JSX에서 사용하는 <input> 태그의 defaultValue 속성은 유사한 역할을 하지만, 다음과 같은 연관성과 차이점이 있습니다:


HTML의 value 속성

역할: HTML의 value 속성은 <input> 태그의 초기값(기본값)을 지정합니다.

  • HTML 문서가 로드될 때 입력 필드에 표시되는 값을 정의합니다.
  • 사용자가 입력 필드의 값을 수정하면 화면에는 수정된 값이 보이지만, HTML 문서에 지정된 value 속성 값은 변경되지 않습니다.
  • 기본적으로 정적인 값입니다.

예:

<input type="text" value="Hello World">
  • 입력 필드는 "Hello World"라는 값으로 초기화됩니다.
  • 사용자가 값을 변경해도 HTML 문서의 value="Hello World"는 변하지 않습니다.

JSX의 defaultValue 속성

역할: JSX의 defaultValue 속성은 HTML의 value 속성과 유사하게, **입력 필드의 초기값(기본값)**을 설정합니다.

  • HTML의 value 속성을 JSX로 표현하는 방식 중 하나입니다.
  • defaultValue는 JSX에서 React가 관리하지 않는 일반적인 DOM 요소에 대해 HTML의 초기값을 설정하는 역할을 합니다.
  • 초기값을 한 번 설정한 뒤에는 사용자가 값을 수정해도 defaultValue 속성 자체에는 영향을 미치지 않습니다.

예:

<input type="text" defaultValue="Hello World" />
  • 입력 필드는 "Hello World"라는 값으로 초기화됩니다.
  • 사용자가 입력 필드의 값을 변경하면, 화면에는 변경된 값이 표시됩니다.

연관성과 차이점

                               
HTML의 value    JSX의 defaultValue
입력 필드의 초기값을 설정합니다. 입력 필드의 초기값을 설정합니다.
HTML 문서에서 작성된 정적 속성입니다. JSX 코드로 작성된 정적 속성입니다.
사용자 입력에 따라 표시되는 값은 변경되지만, value 속성 자체는 변하지 않습니다. 사용자 입력에 따라 표시되는 값은 변경되지만, defaultValue 속성 자체는 변하지 않습니다.
HTML 표준 속성입니다. React JSX에서 사용하는 속성입니다.

결론

  • HTML에서의 value 속성이 JSX에서의 defaultValue와 역할적으로 대응됩니다.
  • HTML에서 value가 설정한 기본값을 제공하듯이, JSX에서 defaultValue는 초기값을 설정합니다.
  • JSX에서 defaultValue는 HTML의 value 속성을 대체한다고 볼 수 있습니다.

이 둘은 초기값을 설정한다는 점에서 동일한 역할을 하지만, HTML과 JSX라는 두 환경의 차이 때문에 이름이 다를 뿐입니다.