컴포넌트는 PascalCase로 이름써야한다
const List = () => {
const arr = [
{
title: "리액트 공부하기",
content : "state 사용법 익히기"
},
{
title: "코테 문제 풀기",
content : "Lv 0 정복 가즈아"
},
{
title: "코테 문제 풀기",
content : "Lv 1 정복 가즈아"
}
]
return (
<div>
<Modal/>
{
arr.map((el)=> <ListChild title={el.title} content ={el.content}/>
)
}
<Modal/>
</div>
);
};
arr.map((el, index)=> <ListChild title={el.title} content ={el.content} key={index}/>
{props.arr?.map((el) => { return <div key={el}>{el}</div> })}
- arr에 값이 있으면 뒤에 것을 실행하는 구조
- 하지만 에러를 막겠다고 물음표를 남발하는 것은 좋지 않다!
🔥 jsx에서(return 내부)는 for문이나 if문 같은 좀 heavy한 구문은 사용하지 못한다
따러서 map이나 삼항연산자를 사용한다 🔥
컴포넌트에 대한 상태
사용이유 : state가 변경되면 해당 컴포넌트가 바로 다시 렌더링 되기 때문에 유동성 관리가 쉽다
상태 변경 함수는 꼭 함수 정의를 하고 사용한다
<button onClick={SetStudent('hatbann')}>영어로!</button>
//이런식으로 사용 xxxx
state가 변경되면 당연히 return 내부에 있는 요소를 다시 렌더링 해야하니 return을 호출 -> 다시 상태 변경함수호출 -> return 호출의 무한루프
<button onClick={() => setArr([1])}>+</button>
이렇게 아예 새로운 배열을 넣어야한다
혹은
<button onClick={() => {
arr[0] = arr[0] + 1;
const copyArr = [...arr];
setArr(copyArr);
}}
>
- 자주 값이 변경되고 바로바로 보여줘야하면 state로 선언하자
- 배열 또는 객체로 쓰기보다는 하나의 원시값으로 쓰는게 좋다
- 배열 or 객체로 쓰려면 js객체 타입 특성에 유의해서 사용하자
const arr = [1, 2, 3, 4, 5];
const copyArr = arr;
copyArr[0] = 2;
console.log(copyArr); //[ 2, 2, 3, 4, 5 ]
console.log(arr);//[ 2, 2, 3, 4, 5 ]
const copyArr = [...arr];
copyArr[0] = 2;
console.log(copyArr); //[ 2, 2, 3, 4, 5 ]
console.log(arr); // [ 1, 2, 3, 4, 5 ]
const obj = {
pororo: '뽀로로',
lupy: '루피',
crong: '크롱',
};
const copyObj = { ...obj };
copyObj.crong = '크롱2';
console.log(obj); //{ pororo: '뽀로로', lupy: '루피', crong: '크롱' }
console.log(copyObj); //{ pororo: '뽀로로', lupy: '루피', crong: '크롱2' }
console.log(obj === copyObj); //false
const copyObj = { ...obj, lupy: 'lupy' }; //이렇게 하면 특정값만 변경가능
function foo(a,b, ...rest){
}
const obj = {
str: "test",
num : 10
}
const {str} = obj;
console.log(str); //"test"
npm intall --save-dev eslint
npm install --save-dev eslint-config-airbnb-base eslint-plugin import
지난 3주간은 팀프로젝트를 하느라 오랜만에 이론수업 및 실습을 진행했다. 리액트는 졸업프로젝트때도 사용했고 자습을 해본 경험이 있는데 앞서 새싹에서 ejs나 순수 html,js로 작업할 때 답답했던 점이 확실히 리액트를 활용하니 편하다고 생각했다. 특히 코드가 확 줄어든다!!