인프런에 제로초님의 강의를 보고 정리한 내용입니다.
[ 웹 게임을 만들며 배우는 React ]
https://www.inflearn.com/course/web-game-react
key와 map에서 구현했던 코드를 조금더 가독성있게 만들어 보자
<ul>
{this.fruit.map((v , i) => ...
아래에 li로 반복문코드를 써주었던 부분을 따로 위에 뺄 수 있다.
fruit = [
{fruit: "사과", taste :"맛있다"},
{fruit: "배", taste :"달다"},
{fruit: "바나나", taste :"맛없다"},
{fruit: "포도", taste :"싫어"},
{fruit: "딸기", taste :"좋아"},
];
조금더 가독성있는 코드가 되었다.
여태까진 한두줄의 간단한 코드가 있었다면
실무에서는 여러개의 코드가 기본..
아래와 같은 부분도 따로 파일로 빼줄 수 있다.!
<li key = {b.fruit + v.taste}>
<b>{v.fruit}</b> - {i}
<div>컨텐츠1</div>
<div>컨텐츠2</div>
<div>컨텐츠3</div>
<div>컨텐츠4</div>
</li>
Try.jsx파일을 만들어주자! (Try 컴포넌트)
import React , {Component} from 'react';
class Try extends Component {
render() {
return (
<li>
<b>{v.fruit}</b> - {i}
<div>컨텐츠1</div>
<div>컨텐츠2</div>
<div>컨텐츠3</div>
</li>
)
}
}
export default Try; //다른파일에서 불러올 수 있게 해주기!
매우 간단해졌다
NumberBaseball.jsx
<ul>
{this.fruit.map((v , i) => {
return (
<Try/>
);
})}
</ul>
컴포넌트를 분리해주는 이유
1. 가독성이 좋아진다.
2. 성능최적화
3. 재사용성
코드가 길어진다면 컴포넌트로 분리해주자!
우리가Try로 바꾸면서 생기는 문제가 위에 map에서 만들어줌 v와 i를 사용할 수 없다. ㅜㅠ
이런 v와 i를 받아줄수있는 것이 바로 props!
사용하는 방법은 매우 간단하다
NumberBaseball.jsx
<Try value={v} index={i} />
v와 i가 value,index에 들어가서 사용할 수 있게 만들어준다.
html에 속성을 지정해주는 것과 매우 비슷한데
html에서는 attribute라면 리액트에서는 props라고 불린다.
따로뺀 파일로가서 this.props를 써주면 사용할 수 있다
Try.jsx
return (
<li>
<b>{this.props.value.fruit}</b> - {this.props.index}
<div>컨텐츠1</div>
<div>컨텐츠2</div>
<div>컨텐츠3</div>
</li>
)
이렇게 만드는게 익숙하지 않는다면
일단 쭉 써준 후,
새로운 컴포넌트를 만들어 기존 데이터를 props로 전달하는 과정을 하자!! = (탑다운방식)
이 상태로 실행해주면 역시나 key가 없다고 에러가 뜬다 ㅎ.
Warning: Each child in a list should have a unique "key" prop.
Try 안에 key를 써주쟈 map안에는 key를 반드시 써줘야함
<Try key={v.fruit + v.taste} value={v} index={i} />
고 유 하 게 ...
고조할아버지에서 나에게 , 내가 증조할아버지에게 뭔가를 주고싶을때 사용하는것 -> 리덕스, 컨텍스트
jsx의 주석
리액트에서 주석처리는
{/* ... */ }
이렇게 {}로 감싸주는 형식이다.
메서드 바인딩
사용자 정의 함수에서 () => {} 대신 () {} 이렇게 쓰면 this를 못쓰고 error가 나타남
전체코드(bind사용)
전체코드(화살표함수 사용)
화살표 함수를 사용하면 bind를 사용하지 않아도 된나. 자동으로 된다.
'개발 > react' 카테고리의 다른 글
[React] 숫자야구 만들기 ( Hooks ) (1) | 2022.03.04 |
---|---|
[React] 3-6 숫자야구 만들기 (1) | 2022.03.03 |
[React] 3-3 리액트 반복분(map, key) (0) | 2022.02.28 |
[React] 3-1 import와 require 비교하기 (0) | 2022.02.27 |
[React] 2-9webpack dev서버와 핫 리로딩 (0) | 2022.02.25 |