
import React from ‘react’;
// 정의
class ClassComponent extends React.Component{
render(){
return (<div>Hello</div>);
}
}
// 사용
ReactDOM.render(<ClassComponent />, document.querySelector(#root));
import React from ‘react’;
// 정의 1
function FunctionComponent(){
return <div>Hello</div>;
}
// 정의 2
const FunctionComponent = () => <div>Hello</div>;
// 사용
ReactDOM.render(<FunctionComponent />, document.querySelector(#root));
React.createElement(type, [props], […children]);type: 태그 이름 문자열 or 리액트 컴포넌트 or React.Fragment[props]: 리액트 컴포넌트에 넣어줄 데이터 객체[…children]: 자식으로 넣어주는 요소들ReactDOM.render(
// <h1>태그 이름 문자열 type</h1>
React.createElement(‘h1’, null, ‘태그 이름 문자열 type’),
document.querySelector(‘#root’)
);
const Component () => {
// <p>리액트 컴포넌트 type</p>
return React.createElement(‘p’, null, ‘리액트 컴포넌트 type’);
};
ReactDOM.render(
React.createElement(Component, null, null), // <Component />
document.querySelector(‘#root’)
);
ReactDOM.render(
// 따로 태그 없이 root 내에 바로 children 삽입 -> 배열처럼 연결해 삽입 가능
React.createElement(React.Fragment, null, ‘React Fragment type’),
document.querySelector(‘#root’)
);
<div>hello</div> 작성하면 React.createElement(‘div’, null, ‘hello’);로 babel이 바꿔줌()로 감싸기<>자식들</> 이용 -> Fragment{표현식} 이용className 키워드 사용해 class 적용<태그 이름 props=”값”> 형태로 작성하고 닫는 부분 꼭 필요props.이름으로 처리하기function Component(props){ // {message: ‘안녕’}
return (<div><h1>{props.message}</h1></div>);
}
ReactDOM.render(<Component message=’안녕’ />, document.querySelector(‘#root’));
Component.defaultProps = { key: value };로 기본값 지정class Component extends React.Component{
state = { count: 0, };
// constructor(props) {
// super(props);
// this.state = {count: 0, };
// }
render(){
return (<div><h1>{this.props.message}</h1></div>);
}
// static Component.defaultProps = { message: ‘기본값1’ };
}
// Component.defaultProps = { message: ‘기본값2’ };
🌟 class에서 state 변경하고 render함수에 바로 반영시키려면 값에 직접 접근하지 않고 this.setState() 함수 사용!
// 매개변수로 새로운 객체 할당
this.setState({ count: this.state.count+1, });
// or 함수를 매개변수로 prev 전달받아 새로운 값 return
this.setState((prev) => {
const new = { count: prev.count+1 }
return new;
});
onClick, onMouseEnter 등)이벤트={함수}function Component(){
return <button onClick={() => {console.log(‘clicked’);}}>
클릭
</button>
}
}
ReactDOM.render(<Component />, document.querySelector(‘#root’));
class Component extends React.Component{
state = { count: 0 };
render(){
return (
<div>
<p>{this.state.count}</p>
<button onClick={click}>
클릭
</button>
</div>
);
}
// 화살표 함수 안쓰려면 constructor에서 binding 필요
// this.click = this.click.bind(this);
click = () => {
this.setState((state) => ({…state, count: state.count+1}));
}
}