<navigation></navigation>
라는 component에 담아서 사용할 수 있다면 너무 편할 것
class ClassName extends Component {
render(){
return(
<태그>
</태그>
);
}
}
import React, { Component } from 'react';
import TOC from './components/TOC';
1)State? Props?
- porps는 사용자의 관점에서 중요한 속성이고, state는 component의 기능을 더욱 다양하게 만들어서 사용해야하는 개발자의 관점에서 중요한 속성이다.
- 리액트는 props와 state의 영역을 철저하게 분리해서 사용한다.
- 예를들면, 아이폰을 사용할 때 사용자는 외부 UI부분에만 신경쓰지 안에 들어가는 부품의 모양, 형태 등에는 관심도 없고 알 필요도 없다.
2)State의 사용
component가 실행될 때 constructor는 state를 초기화 해주고 render메서드 보다 먼저 실행된다.
state를 사용하기 위해 constructor 구조 안에 this.state를 초기화 해준다.
상위 component에 state의 값을 입력해주면 하위 component의 props를 통해서 원하는 값을 수정할 수 있다. 즉, 상위 컴포넌트의 state값을 하위 컴포넌트에 props로 표현해서 사용할 수 있다.
결론적으로, state를 사용하면 상위 component(app component)에서 하위 컴포넌트를 수정할 수 있다. 즉 하위 컴포넌트를 수정하고 싶을 때 import해줬던 components 디렉토리의 js파일을 찾아 들어가 수정할 필요가 없다는 뜻이다. App.js를 사용하는 index.js에서는 어떤 방식으로 컴포넌트가 굴러가는지 숨기는 것이 좋은 사용 방법이다.
3)key
state에서 여러개의 값을 다루는 방법을 배운자.
여러개의 값을 자동으로 생성할 때는 프로퍼티 별로 'key props'가 필요하다.
일단 리액트가 여러개의 값을 state로 생성할 때 필요한 값이라고 생각하고 넘어가자.
state에 contets라는 새로운 state 값 생성
하위 컴포넌트인 TOC에 props를 추가해준다.
TOC.js에서 state 값 형식에 맞게 코드를 작성
이 때 리액트는 <li>
태그에 'key props'를 요구하는데, 추가하는 데이터들의 각각의 요소들의 식별자를 입력해주면된다. 여러개의 데이터 중 햇갈리지않게? 아이디값을 준다고 일단 이해한다.