const [working, setWorking] = React.useState(false);
const [toDos, setToDos] = React.useState({});
const newTodos = Object.assign({}, toDos, { [Date.now()]: { text, work: working} })
setTodos(newTodos);
{ [Date.now()]: { text, work: working} }
형태 : { key : { key: value, key: value } }
{ [Date.now()]: text, work: working }
형태 : { key: value, key: value }
Object.assign
을 하는 이유?
이전 state 값 변경없이 합치기 위해(prevState)
{ [Date.now()]: text, work: working }
에서 work 키를 쓰는 이유?
working
의 상태가 true면 Work 탭, false면 Travel 탭을 구분하기 위하여
* 더 자세한 내용은 해당 프로젝트 코드 확인
Object.assign(target, source1, source2, ... )
target : 목표객체, source : 출처객체
Spread Operator(ES6)
Object.assign
과 유사하며 객체 혹은 배열을 합친다.
// Object.assign 예시
Object.assign({}, toDos, { [Date.now()]: { text, work: working} })
// Spread 연산자 예시
{ ...toDos, { [Date.now()]: { text, work: working} }}