불변성 관리
리액트에서 상태를 변경할 때에는 항상 새로운 객체나 배열을 생성하여 상태를 업데이트해야 해요.
리액트는 상태의 불변성을 유지함으로써 이전 상태와 새 상태를 효과적으로 비교해요.
추가: 새 요소를 배열에 추가할 때는 스프레드 연산자(...)를 사용해 기존 배열을 복사하고 새 요소를 추가해요.
const [items, setItems] = useState(['사과', '바나나']);
const addItem = (item) => {
setItems([...items, item]);
};
제거: 특정 요소를 제거할 때는 filter 함수를 사용해 해당 요소를 제외한 새 배열을 생성해요.
const [items, setItems] = useState(['사과', '바나나']);
const removeItem = (targetItem) => {
setItems(items.filter(item => item !== targetItem));
};
수정: 특정 요소를 수정할 때는 map 함수를 사용해 해당 요소만 업데이트된 새 배열을 생성해요.
const [items, setItems] = useState(['사과', '바나나']);
const updateItem = (targetItem, newItem) => {
setItems(items.map(item => item === targetItem ? newItem : item));
};
객체 상태의 불변성 관리
객체의 속성을 업데이트할 때는 객체 전개 연산자({...})를 사용해 객체를 복사하고, 특정 필드를 업데이트해요.
const [user, setUser] = useState({ name: '지수', age: 20 });
const updateUser = (newValues) => {
setUser({ ...user, ...newValues });
};
Routing 구현과 전역 상태 관리 입문
https://reactrouter.com/en/main/router-components/browser-router
단방향으로 밀어주는 흐름
Redux => store 라고 불리는 외부 저장소를 만들어두고, 필요한 모든 데이터를 여기에 저장하기.
recoil
context 끼리 나눠서 저장소를 만들기
1.만든다
2. 사용한다
3. provider 작업을 해준다
리액트 지금까지 배운거 다시 정리
바뀐 값도 볼 수 있게 해줘
input 할때 let 쓰면 안바뀌어. State 로 관리하면 렌더링 계속 되면서 바뀜.
profile Provider 이 auth provider 위에 있어야.
auth 의 것을 쓸 수 있어.
<auth Project> 안에
<Profile>
const signIn = () => setIsLoggedIn(true);
setNickname 그냥 전달해줘도돼.
setNickName ()
const setNickname = (newNickName) => {
setProfile({ ...profile, nickname: newNickName });
};
or Profile wjscp rorcpfmf rhksflgkrpTek gkaus,
state 에 있는
https://instructor-young.notion.site/Routing-0638d5e109fc46feae7726506ee6660d
취업
일단 기업