// 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은 아래와 같이 삼각 관계로 생각하면 쉽다!