그렇지만 앞서 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-* 속성에 불 값을 사용하는 경우에는 기존과 동일하게 문자열로 렌더링한다.