Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 취업준비
- 함수 바인딩
- 리액트
- 상태관리
- 우아한테크러닝
- 카카오페이
- 코딩테스트
- mobx
- scope
- Hooks
- lexicalEnvironment
- react
- Groo
- npm
- 환경오염
- 취준
- Modules
- JavaScript
- react.js
- excutionContext
- closure
- 개발일기
- 리액트를 다루는 기술
- CSR
- Redux
- useState
- state
- vanilla.js
- SSR
- Binding
Archives
- Today
- Total
개발하자
리액트를 다루는 기술-3 (컴포넌트) 본문
UI를 만들고, 나타날 때, 사라질 떄, 변경이 일어날 떄 주어진 작업들을 처리함
컴포넌트 생성 방식
- 리액트는 함수 컴포넌트와 클래스 컴포넌트를 생성할 수 있음
클래스 함수
장점 | 라이프 사이클 API를 사용할 수 있기 때문에 컴포넌트의 흐름을 파악하기 좋음 | 선언하기 편하고 자원을 덜 사용함 |
단점 | 생성시 API를 모두 사용할 수 있게끔 하기 때문에 사용하지 않는 것들 까지 가지고 있어 자원을 더 많이 사용 함 | state와 라이프 사이클 API 사용이 불가능⇒ Hook으로 해결할 수 있음 |
props ( properties)
- 부모 컴포넌트에서 주입 받은 데이터들 (값, 객체, 함수, 배열 등)
- 사용 방법
- 기본
App.jsconst MyComponent = props => { return <div> 안녕하세요, 제 이름은 {props.name}입니다. </div> } export default MyComponent
- import MyComponent from '파일 주소' const App = () => { return <MyComponent name="React"/> }
- MyComponent.js
- defaultProps 지정
- const MyComponent = props => { return <div> 안녕하세요, 제 이름은 {props.name}입니다. </div> } MyComponent.defaultProps = { name: '기본이름' } export default MyComponent
- children
- 컴포넌트 태그 사이의 내용을 가지고 있는 property
import MyComponent from '파일 주소' const App = () => { return <MyComponent name="React">children</MyComponent> }
const MyComponent = ({name, children}) => { // 비구조화 할당 (destructuring assignment) return <div> {props.children} </div> } export default MyComponent
- 기본
- propTypes 라이브러리
- 런타임에 props의 타입을 지정하고 검사하기 위한 라이브러리
- 타입스크립트를 사용해도 필요할 수도 있음
const MyComponent = ({name, children}) => { // 비구조화 할당 (destructuring assignment) return <div> {props.children} </div> } MyComponent.propTypes = { name: PropTypes.string.isRequire } export default MyComponent
- → 부모 컴포넌트에서 props의 타입을 any로 넘겨줄 경우에 에러가 발생하지 않기 때문
State
1. 클래스 컴포넌트에서의 state 사용
- render 함수에서 this.state 로 사용할 수 있음 (멤버변수)
- constructor에서 기본값 지정 할 수 있음
- setState({업데이트 상태} or 함수, 콜백)
class Component {
constructor(){
this.state = {초기상태}
}
render(){
return <div>
{this.state}
<button onClick={this.setState(변경된 상태 or 실행할 함수)}>plus</button>
</div>
}
}
2. 함수 컴포넌트에서 useState 사용
function Component() {
const [state, setState] = useState(초기상태)
return <div> </div>
}
3. setState를 사용해서만 업데이트 해야하는 이유
- 리액트는 컴포넌트를 사용할 때마다 새롭게 렌더링을 하기 때문에 state를 유지하지 못하고 초기화 되기 때문
- 클로저 형태로만 이전의 데이터를 유지할 수 있음
'Book > 리액트를 다루는 기술' 카테고리의 다른 글
리액트를 다루는 기술-6 ( 컴포넌트 반복) (0) | 2022.11.16 |
---|---|
리액트를 다루는 기술-5 (ref) (0) | 2022.11.16 |
리액트를 다루는 기술-4 (이벤트 핸들링) (0) | 2022.11.16 |
리액트를 다루는 기술-2 (JSX) (0) | 2022.11.14 |
리액트를 다루는 기술-1 (0) | 2022.10.07 |
Comments