// 1. Welcome 컴포넌트 정의
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
// 2. App 컴포넌트 정의
function App() {
return (
<div>
<Welcome name="Sara" />
<Welcome name="Cahal" />
<Welcome name="Edite" />
</div>
);
}
// 3. 화면에 React 요소 그려주기
ReactDOM.render(
<App />,
document.getElementById('root')
);
Welcome 컴포넌트: Welcome 컴포넌트를 사용한 측(부모)에서 name이라는 attribute를 부여했나봅니다. props.name의 값을 사용하네요.
App 컴포넌트를 보니 div로 감싸져있고, <Welcome />컴포넌트를 세번 사용했습니다. name이라는 attribute를 부여해주었네요.
ReactDOM.render 함수로 React 요소를 그려줍니다. root라는 id를 찾아 <App /> 컴포넌트를 그려주네요.

여기서 App 컴포넌트는 최상단 컴포넌트로 AppChild는 자식 컴포넌트이다 AppChild컴포넌트를 import 해줘야한다.
다음으로 App의 state의 속성을 정의하고 있다
- 여기서 this는 App 컴포넌트를 의미하고

handleToggle이라는 함수는 실행시 state의 설정값을 바꾸는 setState함수가 있고 isClicked의 밸류 값을 반대로 해준다handleChildColor함수는 실행시 childColor의 밸류값 즉 purple로 바꾼다 
className 으로 특정 키값에 대한 블리언 값에 따라 구현하는 방법은 유용하다<<app.css
.hide {
diplay : none;
}
<div
style={{
color : this.state.isClicked ? 'red':'blue'
}}
>
{this.state.titleContent}
<div>
isClicked의 밸류값이 트루이면 red<button onClick={this.handleToggle}>Click</button>
handleToggle라는 클릭이벤트를 줬다. 코드 작성시 state의 속성이나 함수를 모두 설정하고 아래 코드를 작성하는 것이 아닌 필요한 것이 있을 때마다
handleToggle같은 함수를 적고 구체적으로 위로 가서 정의하도록 하자
handleToggle 함수 실행-> isClicked value값 반대로 함 false->true -> 해당 div 인라인 스타일 속성 삼항 연산자 true-> red로변경 <<화면


<h1>Props</h1>
<AppChild
handleColor={this.handleChildColor}
fontColor={this.state.childColor}
/>
</div>
import React, { Component } from 'react';
export class AppChild extends Component {
render() {
return(
<div>
<div style={{ color : this.props.fontColor }}> I am Child Component </div>
<button onClick={this.props.handleColor}>Click</button>
</div>
);
}
}
export default AppChild;
<div style={{ color : this.props.fontColor }}> I am Child Component </div>

<button onClick={this.props.handleColor}>Click</button>
handleColor 값{this.handleChildColor} -> childColor 의 값을 purple색상으로 바꾼다. 
Props와 State은 아래와 같이 삼각 관계로 생각하면 쉽다!
