// 가장 기본적인 방법
// useState
function TestComponent() {
const [value, setValue] = useState("초기값");
console.log(value); // => 초기값
return null;
}
function HomePage () {
const [selectedMemeberName, setSelectedMemberName] = useState("채원");
const [letters, setLetters] = useState([]);
return (
<dib>
<Members selectedMemeberName={selectedMemeberName} setSelectedMemberName={setSelectedMemberName}/>
<Letters letters={letters} selectedMemeberName={selectedMemeberName}/>
</div>
)
}
function Members({selectedMemberName}) {
// 특정 멤버를 선택할 수 있어야 하고, 선택한 멤버가 누군지에 따라 버튼의 색을 바꿔 줘야함.
return (
<ul>
<li>
<button onClick={() => {}} style={{
background: selectedMemberName === "사쿠라" ? "aqua" : "white"
}}>사쿠라</button>
</li>
<li>
<button onClick={() => {}} style={{
background: selectedMemberName === "채원" ? "aqua" : "white"
}>채원</button>
</li>
<li>
<button onClick={() => {}} style={{
background: selectedMemberName === "은채" ? "aqua" : "white"
}>은채</button>
</li>
</ul>
)
}
function Letters ({selectedMember}) {
const lettersOnSelectedMember = letters.fillter(letter => letter.MemberName === selectedMember);
// 어떤 멤버가 선택되었는지를 알고, 그 값에 따라서 전체 letters를 필터링 할 수 있어야 함
return letters.map(letter => <Letter key={letter.id} content={letter.content}>)
}
redux
: 특정한 방식으로 전역 상태 관리를 하는 서드파티 라이브러리react-redux
context API
: 리액트에서 공식적으로 제공하는, 리액트에 기본적으로 포함되어 있는 기능zustand
: redux를 좀 더 간편하게 사용할 수 있게 만든 redux 경량화 버전react-query
: 전역 상태 관리 + 서버 상태 관리 라이브러리action
Action creator
Action Creator
(함수)를 (상황에 따라 매개변수와 함께) 호출하여, Action(작업지시서, 객체)를 만들고, 만든 작업지시서를 Reducer에 보낸다.Dispatch
: 만든 작업지시서(Action)을 Reducer 보내는 행위 또는 함수Store
- Store가 주입되어 있는 컴포넌트들에서 접근 가능한 상태 저장소(보통은 전역에서 접근)
State
- 상태
Reducer
- State
를 Action
(작업지시서) 내용에 따라 변경해 주는 함수 -> State
를 작업지시서의 내용에 따라서 변경하는 공장
Action
- 작업 지시서. 보통 객체. 이 객체 안에는 보통 1가지는 필수이며, 1가지는 필요에 따라 들어있다.
필수로 들어있는 것 -> 액션의 타입
필요에 따라 들어 있는 것 -> 페이로드(payload): 작업 지시서에 함께 보내는 자료? 준비물 stuff
ex) 작업지시서의 type이 'N만큼_숫자증가' 이면, 당연히 N이 얼만큼인지도 함께 알려주어야 함.
{
type: 'INCREMENT_BY_AMOUNT',
payload: {
amount: 100
}
}
// -> 이걸 받은 reducer(공장)은 state의 특정 값을 100만큼 올린다.
Action Creator
- 액션(작업지시서)를 만들어 주는 함수. 일반적으로 하나의 액션에는 하나의 액션 크리에이터를 대응해서 만들어 준다.
Dispatch
- 액션을 리듀서로 보내는 행위 또는 함수. -> 작업지시서를 공장으로 보내주는 것.