순수함수란 입력값에 대해 항상 동일한 출력값을 반환하는 함수로, 외부상태에 영향을 끼치는 사이드 이펙트가 없는 함수를 의미합니다. 순수함수는 입력값만을 가지고 처리하기 때문에 입력값이 변경되지 않는 한 항상 같은 결과를 반환하므로 불변성을 유지합니다.
순수함수 : 오직 함수의 입력만이 함수의 결과에 영향을 주는 함수. 사이드 이펙트가 없어야 함. 즉, 함수 body내에 있는 코드만 점검하면 되기 때문에 간결하게 코드를 작성하는데 도움이 됨
사이드 이펙트 : 의도치 않게 외부 변수를 참조하거나, 변경하는 모든 종류의 코드를 의미함 (의도하지 않은 결과)
데이터의 불변성 : 순수함수를 제작하기 위해서 데이터의 불변성을 유지하는 것이 중요함. 함수의 전달인자로 참조 자료형이 전달되는 경우, 의도치 않게 해당 객체 자체를 바꾸는 사이드 이펙트를 만들수도 있고 데이터의 불변성을 손상시킴. 그래서 배열의 불변성을 보장하는 메서드인 map, filter, reduce등을 많이 씀
state는 렌더링하는 데 있어 영향을 미칠 수 있는 값을 말합니다. props는 부모 컴포넌트에서 자식 컴포넌트로 내려주는 데이터 값을 말합니다. 그래서 props의 경우 수정이 불가능하고, state의 경우 수정이 가능합니다.
리액트에서 데이터를 주고 받기 위해서는 부모-자식 관계가 성립이 되어야 하고, 성립이 되었다면 props로 데이터를 내려주어야 한다. 그런데 이 때 props가 너무 복잡해지면 prop-drilling 현상이 나타나고 코드가 복잡해진다. 이러한 것을 해결하기 위해 상태 관리가 필요하다.