오류 메세지
Invariant Violation: Expected $splice target to be an array; got undefined
at invariant
//처음에 시도한 방식(오류)
state.wordLists.map((word) => (word.id === data.id ? data : word));
//문제점 : map은 새로운 객체를 만드는 방식이라 기존 객체는 수정되지 않음
//다른 방식(오류)
import update from "react-addons-update";
const findIndex = state.wordLists.findIndex((w) => w.id === data.id);
update(state.wordLists, {
[findIndex]: {
english: {
$set: data.english,
},
korean: {
$set: data.korean,
},
type: {
$set: data.type,
},
},
});
//문제점 : immer를 사용하고 있으므로 react-addons-update는 immutable 방식이고 본인의 경우 mutatble 방식으로 사용해야 함(맞지 않음)
//수정 1 (안티패턴)
state.wordLists.find(
(v) =>
v.id === data.id &&
((v.english = data.english),
(v.korean = data.korean),
(v.type = data.type))
);
//최종방식
const findRevise = state.wordLists.find((v) => v.id === data.id);
if (findRevise) {
findRevise.english = data.english;
findRevise.korean = data.korean;
findRevise.type = data.type;
}