function FuncComponent() {
const class = "kdt";
return (
<>
<div> {class == "kdt" ? "kdt반가워요" : "누구..?"}</div>
<div> 반가워!</div>
</>
);
}
export default FuncComponent;
화살표 함수로도 표현가능
function FuncComponent = () => {
cons class = "kdt";
return();
}
export default FuncComponent;
- Hooks
과거에는 함수형 컴포넌트가state
, 라이프사이클을 지원하지 않았기 때문에 클래스형 컴포넌트를 많이 사용했지만, React v16이후부터Hooks
를 통한 state 및 LifeCycle 관리가 가능해져 리액트에서 공식적으로 함수형 컴포넌트 사용을 권장한다. Hook의 useState를 사용해 state를 관리할 수 있고, useEffect를 사용해 LifeCycle을 관리할 수 있다.
- 직관적인 코드
자바스크립트의 함수(function) 선언, 화살표 함수를 그대로 사용해 컴포넌트를 사용 가능하기 때문에 개발자에게 직관적이다.
- 메모리 자원효율
클래스형 컴포넌트에 비해 함수형 컴포넌트가 비교적 메모리 자원을 적게 사용한다.
- class 키워드로 클래스 컴포넌트 생성
- React.Component 상속
React의 ComponentClass를 상속받아 Component 상속이 필요- render()메서드 필수로 사용
클래스 컴포넌트 안에 render() 메서드가 꼭 필요하고 메서드 안에 JSX를 리턴한다.- this 키워드 사용하기
state, props, refs, 컴포넌트 메서드, 생명주기 메서드를 사용할 때 this로 프로퍼티를 참조하여 사용한다.
import { Component } from "react";
class ClassComponent extends Component {
render() {
const class = 'kdt';
return (
<>
<div>{ class == "kdt" ? "kdt 반가워요" : "누구..?" }</div>
<div>반가워!</div>
</>
)
}
}
export default ClassComponent;
{}
기호로 감싸서 사용한다.//부모 컴포넌트
<FuncComponent name="홍길동"></FuncComponent>
//자식 컴포넌트
const FuncComponent = (props) => {
return (
<>
<div> 내 이름은 {props.name} </div>
</>
);
}
//결과
//내 이름은 홍길동
//부모 컴포넌트
<FuncComponent></FuncComponent>
//자식 컴포넌트
const FuncComponent = (props) => {
return (
<>
<div> 내 이름은 {props.name}</div>
</>
);
}
FuncComponent.defaultProps = {
name : '고길동'
}
//결과
//내 이름은 고길동
//부모 컴포넌트
<FuncComponent name="철수">난 자식이다</FuncComponent>
//자식 컴포넌트
const FuncComponent = (props) => {
return (
<>
<div> 내 이름은 {props.name} </div>
<div> {props.children} </div>
</>
);
}
//결과
//내 이름은 철수
//난 자식이다
import PropTypes from "prop-types";
FuncComponent.propTypes = {
name : PropTypes.string //string 타입으로 지정해줌
}
HTML Event
<button onclick="activeEvent();">버튼</button>
React Event
<button OnClick={activeEvent}>버튼</button>
<MyButton onClick={activeEvent}/> //버튼 이벤트 발생x
<button onClick={()=> onClickEvent("인자1")}>클릭 이벤트</button>
<button onClick={(e)=> onClickEvent2("인자1")}>클릭 이벤트</button>
<button onClick={this.printConsole}>printConsole2</button>
<button onClick={this.handleButton}>handleButton</button>
constructor(props) {
super(props);
this.eventExample = this.eventExample.bind(this);
}
eventExample(){
console.log(this)
}
eventExample2 = () => {
console.log(this)
}
출처
https://life-with-coding.tistory.com/508
https://life-with-coding.tistory.com/509