순수 함수
란 동일한 입력이 주어지면 항상 동일한 출력을 반환하고 사이드이펙트가 없는 함수이다.
입력값이 변경되지 않는 한 항상 같은 결과를 반환하므로 불변성을 유지하며 사이드 이펙트를 일으키지 않으므로 외부 상태를 변경할 수 없는 함수이다.
function add(a, b) {
return a + b;
}
add(10, 5) // 결과 : 15
add(10, 5) // 결과 : 15
add(10, 5) // 결과 : 15
Math.random()
은 실행할 때마다 0에서 1사이의 새로운 난수를 생성하므로 프로그램의 의미를 변경하지 않고 0.4011148700956255로 대체 할 수 없다.Math.random(); // => 0.4011148700956255
Math.random(); // => 0.8533405303023756
Math.random(); // => 0.3550692005082965
개체가 생성된 후
수정되지 않도록 하는것
이다. 불변 객체가 생성되면 변경할 수 없다.
불변 데이터는 수정할 수 없기 때문에 프로그램 상태를예측 가능하게 유지
하여안전하게 실행
될 수 있다.
부작용으로 함수에서 값을 반환하는 일 외에 외부 변수를 참조하거나, 변경하는 모든 종류의 코드를 의미한다.
- 예측 가능: 동일한 입력에 대해 동일한 출력을 반환하므로 예측 가능하고 쉽게 파악할 수 있다.
- 안정성: 부작용이 없기 때문에 경쟁 조건에 대한 걱정없이 안전하게 실행한다.
- 테스트 용이성: 예측 가능한 결과값을 반환하므로 다른 함수들과 조합하여 재사용 및 유지 관리가 가능하다.
이런 장점으로 개발자가 함수를 다루기 쉬워지고 개발 효율(생산성, 안정성)등을 높일 수 있어 순수함수를 사용한다.
props
(함수 매개변수처럼)는 상위에서 하위(부모 컴포넌트)로 데이터를 전달하기 위해 사용하고 변경이 불가합니다.
state
(함수 내에 선언된 변수처럼)는 내부 컴포넌트에서 관리하는 데이터 상태를 의미하며setState
메서드를 통해서만 수정이 가능하다.
useState
훅을 사용하여setState
메서드를 사용하여 관리 및 업데이트를 합니다.
useState
초기값을 설정하고 state와 setState 두 가지 요소를 배열 형태로 설정한다.
state 값을 변경할려면 setState 함수를 불러서 변경될 값을 넣어주면 된다.