리액트 스탠다드 과제 > 깃헙 > 제출
정규표현식 공부
react로 todolist 만들기
불변성 특강
얕은 비교
하여 다른 경우에만 리렌더링한다💡 얕은 비교란?
참조값의 경우 주소끼리 비교하고, 원시값은 데이터값 그 자체끼리 비교하는 것
const [state, setState] = useState({a: 1, b: 2});
// 초기 state {a: 1, b: 2} 는 참조값으로 0x1234 와 같은 주소값을 가리킴.
state.a = 10; // state 값을 직접 변경해도 state는 여전히 0x1234
setState(state); // 기존 state 와 변경요청온 state 모두 0x1234 이므로 리렌더링이 발생하지 않음
const [obj, setObj] = useState({
name: "James",
age: 30
})
const increaseAge = () => {
setObj({...obj, age: obj.age + 1});
// setObj({name: "James", age: 30, age: obj.age + 1});
}
const [obj, setObj] = useState({
name: "James",
contact: {
email: "abc@gmail.com",
phone: "010-1234-5678"
}
})
const changeEmailTo = (newEmail) => {
setObj({ ...obj, contact: {...obj.contact, email: newEmail} })
}
// immer 적용
import { produce } from "immer";
const [obj, setObj] = useState({
name: "James",
contact: {
email: "abc@gmail.com",
phone: "010-1234-5678"
}
})
const changeEmailTo = (newEmail) => {
setObj(
produce(draftObj => {
draftObj.contact.email = newEmail;
})
)
}
깊은 복사X. 수정이 발생한 대상만 복사, 나머지는 유지 => 메모리 절약 + 불변성 유지
📍 https://velog.io/@jetiiin/정규표현식
순수함수 개념은 아직 잘 모르겠다
- 내일은 todolist 한 것 정리해야지
- 알고리즘은 언제 하지......
- 내일이 금요일이라니.. @_@