개발의 모든것/React
[리.다.기] 컴포넌트
연재몬
2022. 6. 16. 21:12
react 클래스형과 함수형의 차이
- 클래스형 컴포넌트의 경우, state 및 라이프사이클 기능을 사용 할 수 있다는 점
- render함수가 반드시있어야하고, 그 안에서 보여줘야 할 JSX를 반환해야한다.
- props를 조회 해야 할 때에는 this.props를 조회
import React, { Component } from 'react';
class Hello extends Component {
static defaultProps = {
name: '이름없음'
};
render() {
const { color, name, isSpecial } = this.props;
return (
<div style={{ color }}>
{isSpecial && <b>*</b>}
안녕하세요 {name}
</div>
);
}
}
export default Hello;
- 함수형 컴포넌트는 클래스형 보다 훨씬 간편하다
- 메모리 자원또한 덜 사용한다
- 클래스형과는 다르게 state, 라이프사이클API사용이 불가하다.
- ⇒ 리액트 훅으로 해결 (useState)
import React from 'react';
function Hello({ color, name, isSpecial }) {
return (
<div style={{ color }}>
{isSpecial && <b>*</b>}
안녕하세요 {name}
</div>
);
}
Hello.defaultProps = {
name: '이름없음'
};
export default Hello;
리액트에서 모듈이란? 모듈화?
모듈은, 여러기능을 담고있는 코드를(여러파일) import, export를 사용해
해당 파일안에서 특정코드만 가져와서 작업하는 방식이다.
태그사이 내용을보여주는, Children
컴포넌트 태그 사이에 넣은 값을 조회하고 싶을 땐, props.children을 조회
//App.js (부모컴포넌트)
import MyComponent from './MyComponent
const App = () => {
return <MyComponent>Chinldren!!</MyComponent>
};
export default App;
//MyComponent.js (자식컴포넌트)
const MyComponent = ({children}) => {
return (
<div> children값은 {children}입니다 </div>
);
};
export default MyComponent;
리액트Hook, useState
컴포넌트에서 동적인 값을 상태(state)라고 부른다.
리액트에 useState라는 함수가 있는데, 이것을 사용하면 컴포넌트에서 상태를 관리 할 수 있다.
import React, { useState } from 'react';
function Counter() {
const [number, setNumber] = useState(0);
const onIncrease = () => {
setNumber(prevNumber => prevNumber + 1);
}
const onDecrease = () => {
setNumber(prevNumber => prevNumber - 1);
}
return (
<div>
<h1>{number}</h1>
<button onClick={onIncrease}>+1</button>
<button onClick={onDecrease}>-1</button>
</div>
);
}
export default Counter;
useState를 사용 할 때에는 상태의 기본값을 파라미터로 넣어서 호출해준다.
이 함수를 호출해주면 배열이 반환되는데,
여기서 첫번째 원소는 현재 상태, 두번째 원소는 Setter 함수이다.
const numberState = useState(0);
const number = numberState[0];
const setNumber = numberState[1];
//배열 비구조화 할당 한줄로 요약
const [number, setNumber] = useState(0);