본문 바로가기
React/1

State

by lacuca9 2024. 10. 30.

State란?

컴포넌트 내부에서 바뀔 수 있는 값.

 

useState 함수로 state를 만든다.

state를 만들어주는 리액트에서 제공하는 기능.

 

사용법

const [ value, setValue ] = useState( 초기값 )

초기값을 initial state 라고 부름

 

이벤트 핸들러

function onClickHandler() {
	console.log("");
}

 


useState + onChange Event

 

1. Input과 state 구현하기

    Input에서는 보통 사용자가 입력한 값을 state로 관리하는 패턴을 많이 씀

 

 

불변성 

메모리에 있는 값을 변경할 수 없는 것.

원시 데이터는 불변성이 있고, 객체, 배열, 함수는 불변성 없음

 

리액트에서는 원시데이터가 아닌 데이터의 불변성을 지켜주는 것을 중요시 함

-> 화면을 리렌더링 할지 말지 결정할 때 state의 변화를 확인함.

    state의 메모리 주소를 비교함. 즉, 원시데이터가 아닌 데이터를 수정할 때 불변성을 지켜주지 않고,

    직접 수정을 가하면 값은 바뀌지만 메모리 주소는 변함 x

 

불변성 지키기 예시

직접 수정을 가하지 않고 전개 연산자를 사용해서 기존의 값을 복사하고,

그 이후에 값을 수정하는 식으로 구현

 


순수함수

 

하나 이상의 인자를 받고, 인자를 변경하지 않고, 참조하여 새로운 값을 반환하는 함수

즉, 같은 input동일한 인자가 전달되면 항상 동일한 결과를 반환하는 함수(코드 블록)

// 매개변수를 복사한 값을 변경하는 순수함수
const addSixPure = (arr) => {
  // 펼침 연산자로 새로운 배열에 6 추가
  newArr = [...arr, 6];
  return newArr;
};

 

순수함수가 아닌 것

const num_arr = [1, 2, 3, 4, 5];

// 매개변수의 값을 직접 변경하는 불순함수
const addSixImpure = (arr) => {
  // 매개변수에 직접 6 추가
  arr.push(6);
  return arr;
};

 

 

1. 컴포넌트의 많은 루틴을 순수 함수로서 작성하기를 요구함

  • 컴포넌트에서 state와 props가 같으면, 항상 같은 값을 반환해야함
  • 다른 Side effects를 발생시키지 않아야 함. (HTTP 요청, 데이터 저장, 쿠키 조작 등)

2. 컴포넌트의 상태값은 불변 객체(Immutable Object)로 관리해야 함

  • 수정할 때에는 기존 값을 변경하는 것이 아니라, 같은 이름의 새로운 객체를 생성

3. 이를 통해, UI 개발의 복잡도를 낮추고, 버그 발생 확률도 줄임

   + 같은 입력에 대해 항상 같은 출력을 보장하니, 테스트 하기도 훨씬 수월

 

 

 

'React > 1' 카테고리의 다른 글

React Hooks  (0) 2024.11.01
CSS-in-Js  (0) 2024.10.31
Component & Rendering  (0) 2024.10.30
Props  (0) 2024.10.30
CRA (Create React App), JSX(JavaScript + XML)  (0) 2024.10.30