(순서는 보장해줄 수 없으므로 순서가 보장된 객체의 비교만 가능하고, 순서까지 보장해준뒤 비교하려면 아래 추가 코드(sort 와 reduce사용) 를 통해 보장해 줄 수 있다)
const obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
console.log(Object.entries(obj).toString()) // 'foo,bar,baz,42'
saga 에서 지금 cupdispenser 값이 redux store인 hwStatus 값과 다를때에만 dispatch해라 라고 적용해주었다.
if (Object.entries(cupDispenserStatus).toString() !==
Object.entries(hwStatus.cupDispenser).toString()) {
yield put(setCupDispenserStatus(cupDispenserStatus));}
JSON.stringify(a)
a에 들어가는 객체,배열,string 등 모든 값을 string으로 묶어주는 역할을 한다. 즉 아래 코드를 보면 객체 비교가 가능하다. const obj = { foo: 'bar', baz: 42 };
const obj2 = { foo: 'bar', baz: 42 };
console.log(JSON.stringify(obj)) //'{"foo":"bar","baz":42}'
console.log(JSON.stringify(obj2)) // '{"foo":"bar","baz":42}'
console.log(JSON.stringify(obj)===JSON.stringify(obj2)) // true
saga 에서 지금 cupdispenser 값이 redux store인 hwStatus 값과 다를때에만 dispatch해라 라고 적용해주었다.
if (JSON.stringify(cupDispenserStatus) !== JSON.stringify(hwStatus.cupDispenser)) {
yield put(setCupDispenserStatus(cupDispenserStatus));
}
{splitter : true, plate : true}
로 들어올 때 도 있고, {plate : true, splitter : true }
로 들어오기도 해서 제대로 된 비교를 하기 위해 아래와 같은 코드를 작성했다. const sortedCupDispenserStatus = cupDispenserStatus.map((cupDispenser) =>
Object.keys(cupDispenser).sort().reduce((obj, key) => ((obj[key] = cupDispenser[key]), obj), {}));