[TIL] 엘리스 SW 엔지니어 트랙 Day 050
📖 오늘 배운 내용 - 2021.12.31
- Props
- State
📝 Props
[React] 리액트 Props란?
🎯 리액트 Props란? 📝 props란? // 컴포넌트 생성 const Welcome = (props) => { retutn Hello, {props.name} ; } // 컴포넌트 사용 const App = () => { return ; } 기본적으로 Component에 원하는 값을 넘겨줄..
lakelouise.tistory.com
📝 State
[React] 리액트 State란?
🎯 리액트 State란? import { useState } from 'react'; function Example() { const [count, setCount] = useState(0); return ( 버튼을 {count}번 눌렀습니다. setCount(count + 1)}>클릭 ); } State는 컴포넌..
lakelouise.tistory.com
📝 이벤트 처리
[React] 리액트에서 이벤트를 다루는 방법
🎯 리액트에서 이벤트 다루는 방법 리액트에서 이벤트의 이름은 카멜(Camel) 표기법으로 사용한다. 문자열이 아닌 JSX 함수명으로 전달한다. ( onClick={함수명} ) 📝 이벤트 처리(핸들링) 방법 이벤
lakelouise.tistory.com
📝 생명주기
[React] 리액트 생명주기란?
🎯 리액트 생명주기란? 생명주기란 앱이 실행되고 종료되는 과정을 특정 시점 별로 나눠둔 것을 말한다. React의 생명주기는 컴포넌트가 이벤트를 다룰 수 있는 특정 시점을 말하며 마운트, 업데
lakelouise.tistory.com
📝 리액트 클래스형 컴포넌트 setState 사용 방법
[React] 리액트 클래스형 컴포넌트 setState 사용하기
🎯 클래스형 컴포넌트 setState 사용하기 import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; import * as serviceWorker from './serviceWorker';..
lakelouise.tistory.com
📝 클래스 컴포넌트에 이벤트 정의
[React] 리액트 클래스 컴포넌트에 이벤트 정의하기
🎯 클래스 컴포넌트에 이벤트 정의 방법 함수를 이벤트 바인딩을 하지 않으면 해당 함수가 어떤 함수인지 알 수 없기 때문에 바인딩을 꼭 해줘야 한다. constructor() 와 render() 사이에 이벤트를 정
lakelouise.tistory.com
📝 Key
function NumberList(props) {
const numbers = props.numbers;
const listItems = numbers.map((number) =>
<li key={number.toString()}>/*li태그에 직접 key값을 부여*/
{number}
</li>
);
return (
<ul>{listItems}</ul>
);
}
const numbers = [1, 2, 3, 4, 5];
ReactDOM.render(
<NumberList numbers={numbers} />,
document.getElementById('root')
);
- 여러 가지 컴포넌트가 동시에 렌더링이 되기 때문에 컴포넌트를 구분하기 위해서는 key값이 필요하다.
- 리액트의 입장에서 key값을 통해 구분할 수 있다.
- key는 string값을 가지는 props다.
- key는 형제 사이에서 고유한 값이어야 한다.
- 페이지 내의 모든 key값이 독립적일 필요는 없다.
- key는 주변 배열의 context에서만 의미가 있다.
- key의 값은 동일한 리스트 엘리먼트 내에서만 유효하다.
- 따라서, 태그마다 유니크한 key값을 주어야 한다.
const todoItems = todos.map((todo) =>
//<li>의 key값으로 todo.id라고, id값을 부여한 것을 확인할 수 있다.
<li key={todo.id}>
{todo.text}
</li>
);
- key는 리스트의 각 아이템이 추가되거나, 수정, 삭제될 때 리액트의 입장에서 빠르게 알아차릴 수 있도록 도와주는 역할을 한다.
- 가장 좋은 key값을 부여하는 방법은 다른 엘리먼트들과 다른 UNIQUE 한 string값을 부여하는 것이다.
- 대부분, 데이터의 id값을 key값으로 부여한다.
- index값을 키로 사용할 수 있지만, 성능 저하 or 컴포넌트의 state와 관련한 문제가 발생할 수 있다. 따라서, 명시적으로 id값을 적는 것이 좋다.
const todoItems = todos.map((todo, index) =>
// index를 이용하여 key값 부여하기
<li key={index}>
{todo.text}
</li>
);
- 만약, 변하지 않고 고정적인 key 값을 부여하는 것이 정말! 어렵다면 index를 사용하여 부여한다.
- 하지만, 그럴 경우 문제가 생길 수도 있다. array 내 아이템의 순서가 바뀔 수도 있기 때문이다.
💡 오늘 깨달은 것
Props
는 컴포넌트에 전달되어 사용되는 반면State
는 컴포넌트 안에서 관리된다.Props
는 함수의 매개변수처럼 사용되는 것이고State
는 함수 내에 선언된 변수처럼 사용되는 것이다.Props
와State
의 가장 큰 차이로Props
는 부모 컴포넌트에서 자식 컴포넌트로 전달하는 값으로 자식 컴포넌트에서는Props
를 직접 수정할 수 없지만State
는 컴포넌트 내부에서 선언하며 내부에서 관리되는 값으로 값을 변경할 수 있다는 점이 있다.- 따라서 값이 변경되어야 하는 상황, 예를 들면 매초 변하는 시간을 출력해야 하거나 버튼 클릭 시 값이 변하는 것을 출력해야 한다면
State
를 사용해야 한다. - 즉,
Props
는 읽기 전용으로 수정이 불가능하고,State
는 원하는 경우 수정이 가능하기 때문에 상황에 따라 알맞은 것을 사용!
- 따라서 값이 변경되어야 하는 상황, 예를 들면 매초 변하는 시간을 출력해야 하거나 버튼 클릭 시 값이 변하는 것을 출력해야 한다면
- 비동기적이란 일정 주기마다 변경되는 것이 아닌, 특정 이벤트를 통해 변경되는 것을 의미하며 예를 들어 버튼 클릭 같은 것을 말한다.
📌 참고
'프로그래밍 > Today I Learned' 카테고리의 다른 글
[TIL] 엘리스 SW 엔지니어 트랙 Day 052 (0) | 2022.01.10 |
---|---|
[TIL] 엘리스 SW 엔지니어 트랙 Day 051 (0) | 2022.01.03 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 049 (0) | 2021.12.31 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 048 (0) | 2021.12.30 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 047 (0) | 2021.12.28 |
댓글
이 글 공유하기
다른 글
-
[TIL] 엘리스 SW 엔지니어 트랙 Day 052
[TIL] 엘리스 SW 엔지니어 트랙 Day 052
2022.01.10 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 051
[TIL] 엘리스 SW 엔지니어 트랙 Day 051
2022.01.03 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 049
[TIL] 엘리스 SW 엔지니어 트랙 Day 049
2021.12.31 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 048
[TIL] 엘리스 SW 엔지니어 트랙 Day 048
2021.12.30