programing

상태를 참조하지 않는 제네릭 돌연변이에서도 vuex가 제대로 작동할까요?

muds 2023. 6. 30. 22:37
반응형

상태를 참조하지 않는 제네릭 돌연변이에서도 vuex가 제대로 작동할까요?

데이터 트리가 있는 vuex를 사용하고 있습니다.반응성이 있고 해당 구성 요소 트리가 있기 때문에 잘 작동합니다.구조가 트리이므로 깊이 중첩된 하위 개체를 변형하려는 경우가 많습니다.이를 구현하는 쉬운 방법은 페이로드에서 아이를 받아들이는 돌연변이를 사용하는 것입니다.

removeLeaf(state, { child, leaf }) {
  child.children = child.children.filter((i: any) => i !== leaf);
  state = state; // silence warning
},

다른 방법은 다음과 같이 작동하도록 변환을 변경하는 것입니다.

removeLeaf(state, { child_, leaf }) {
  let child = searchForChild(state, child_);
  child.children = child.children.filter((i: any) => i !== leaf);
},

저는 첫 번째 방법에 만족합니다.상태 매개 변수 대신 페이로드를 사용하여 상태의 하위 개체를 수정하는 돌연변이를 작성하는 데 단점이 있습니까?

제대로 작동하지 않을 것 같습니다.

Vue와 Vuex의 반응성 시스템은 Javascript Getter와 Setter를 기반으로 합니다.

console.log를 사용하는 경우state어떤 돌연변이에서도 다음과 같은 것을 볼 수 있습니다.

enter image description here

get그리고.setVuex 상태를 개선하고 설정합니다.

세터가 없으면 Vue의 반응성 시스템은 작동하지 않을 것입니다.

console.log를 사용해 보십시오.state그리고.child당신의 돌연변이에서.당신은 아마도 그것을 보게 될 것입니다.child 세터가 포함되어 있지 않습니다.

세터가 없으면 Vue는 사용자가 상태를 업데이트한 것을 알지 못합니다.child반응성에 문제가 생길 가능성이 높습니다.

언급URL : https://stackoverflow.com/questions/56264005/will-vuex-work-properly-with-generic-mutations-that-dont-reference-state

반응형