2장에서의 문법들은 함수 컴포넌트이다.
클래스형 컴포넌트
render 함수가 꼭 있어야하고, 그 안에서 보여줄 JSX를 반환해야한다.
import React, {Component} from 'react;
class App extends Component {
render() {
const name = 'react';
return <div className="react">{name}</div>;
}
}
export default App;
const triple = (value) => value * 3;
props
: 컴포넌트 속성을 설정할때 사용하는 요소
App.js
function App() {
return <MyComponent name="React"/>;
}
MyComponent.js
const MyComponent = ({name, children}) => {
return (
<div>
나의 컴포넌트는 {name} 입니다.<br/>
children은 {children} 입니다.
</div>
);
};
// 기본값 설정
MyComponent.defaultProps = {
name: '기본이름'
};
// 타입 설정, 필수값 설정
MyComponent.propTypes = {
name: PropTypes.string
favoriteNumber: PropTypes.number.isRequired
};
state
: 컴포넌트 내부에서 바뀔 수 있는 값
[현재상태, setter 함수] = useState(초깃값)
App.js
function App() {
return <Say/>;
}
Say.js
import React, {useState} from 'react';
const Say = () => {
const [msg, setMsg] = useState('');
const [color, setColor] = useState('black');
const onClickEnter = () => setMsg('안녕하세요');
return (
<div>
<button onClick={onClickEnter}>입장</button>
<h1 style={color}>{msg}</h1>
<button style={{color:'red'}} onClick={() => setColor('red')}>빨강</button>
</div>
)
}
export default Say;