기간 (2024 / 03.25 ~ 03.30)
작성 (2024 / 03.31)
문제 : Proxy / Object.defineProperty 의 차이점
시도 : 각각을 사용하여 과제 E 풀어봤으나 가독성 외에 큰 차이를 못느끼겠어서 질문해봄
해결 :
알게된 것 : 각각에 대한 사용성은 그 상황에 따라 적절히 사용하길 권장한다.
문제 : 과제F에서 store 클래스 내부 작성 시 state가 직접 수정됨
과제 해설 확인 후 직접수정을 못하도록 해야되는 점 캐치함
시도 : 다른점 파악
해결 : 이렇게 나와 해설이 달랐던 부분을 코드로 나타내면 다음과 같다.
state를 직접적으로 수정하지 못하도록, commit을 통해서만 값을 변경해야 값의 변화를 전파할 수 있도록 state를 정의합니다.
export class Store {
#state;
#mutations;
#actions;
state = {};
constructor({ state, mutations, actions }) {
...
Object.keys(state).forEach(key => {
Object.defineProperty(
this.state,
key,
{ get: () => this.#state[key] },
)
})
}
commit(action, payload) {
this.#mutations[action](this.#state, payload);
}
}