더북(TheBook)

그렇지만 앞서 2.3절에서 다룬 것처럼 표준 HTML 요소에 비표준 HTML 속성을 전달하면 해당 HTML 속성이 렌더링되지 않는다. 예를 들어 다음 두 코드를 살펴보자.

<li react-is-awesome={this.reactIsAwesome}>React is orange</li>

<li reactIsAwesome={this.reactIsAwesome}>React is orange</li>

 

두 경우 모두 결과는 다음과 같다.4

<li>React is orange</li>

 

확실히, 사용자 지정 컴포넌트 클래스에는 내장 렌더러가 없고, 표준 HTML 요소나 다른 사용자 지정 엘리먼트에 의존하므로 데이터를 다루기 위해 data-* 속성을 사용할 필요는 없다. this.props를 통해서 입력한 모든 속성에 접근할 수 있기 때문이다.

2.3절에서 살펴본 자바스크립트 HelloWorld 컴포넌트를 다시 한 번 살펴보자.

class HelloWorld extends React.Component {
  render() {
      return React.createElement(
          'h1',
          this.props,
          'Hello ' + this.props.frameworkName + ' world!!!'
      )
  }
}

 

4   역주 2장에서 주석으로 소개한 것처럼 React 버전 16부터는 비표준 속성의 사용을 허용한다. 그렇지만 이 경우에는 본문의 설명처럼 해당 비표준 속성이 렌더링되지 않는 것을 확인할 수 있다. 이것은 DOM 요소의 속성 값으로 불 값을 사용하는 경우, 이전 버전에서는 문자열 ‘true’ 또는 ‘false’로 나타냈으나, 버전 16부터는 무시하도록 변경되었으므로 비표준 속성의 사용과는 무관하다. 다만 data-* 또는 aria-* 속성에 불 값을 사용하는 경우에는 기존과 동일하게 문자열로 렌더링한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.