반응형
vuex 저장소의 일부를 작업 페이로드로 디스패치하는 것이 올바른가?
이 vuex 스토어에 대해 몇 가지 질문이 있습니다.
export default {
state: {
resultSet: [
{
name: "result 1"
deep: {
inside: {
isLoading: false
}
}
},
{
name: "result 2"
deep: {
inside: {
isLoading: false
}
}
},
]
},
actions: {
/*
r is an item of the resultSet in the store (so r is a part of the store)
*/
sendQuery(context, r) {
//Here I mutate r directly (it means that I mutated the store directly without commit a mutation)
r.deep.inside.isLoading = true;
//Everything work, the UI is updated along with the state changes, but I'm not sure that
//I'm doing the right thing (mutate the store indirectly without committing a mutation)
}
}
}
질문:
스토어의 일부를 액션 페이로드로 디스패치하는 것이 올바른가?=> 액션은 r의 상태를 직접 변경할 수 있습니다.
변이하는 것이 옳은가?
r.deep.inside.isLoading=true
위 액션에서?
- 스토어의 일부를 액션 페이로드로 디스패치하는 것이 올바른가?=> 액션은 r의 상태를 직접 변경할 수 있습니다.
주(州)가 탑재되어 있는 것은 괜찮습니다.그러나 액션은 상태를 직접 수정할 수 없습니다.
- 변이하는 것이 옳은가?
r.deep.inside.isLoading=true
위 액션에서?
아니요. 문서로부터:
상태를 변환하는 대신, 동작은 돌연변이를 커밋합니다.
작업은 돌연변이(Vuex의 "이벤트 버스" 및/또는 뮤텍스)만 커밋해야 합니다.
(이벤트 자체와 유사한) 액션이 다른 이벤트와 유사한 것을 디스패치하는 것은 어리석게 보일 수 있지만, 변환 이벤트("commits")는 어떻게 동기화되어야 하는지와 같은 특별한 규칙이 있는 반면 액션은 돌연변이를 커밋하기 전에 비동기 태스크를 수행할 수 있습니다.
개발 중에 strict 모드를 활용하면 상태를 잘못 수정할 때 Vuex에서 확실하게 알립니다.
언급URL : https://stackoverflow.com/questions/52127679/is-it-right-to-dispatch-a-part-of-the-vuex-store-as-a-payload-of-an-action
반응형
'source' 카테고리의 다른 글
데이터베이스 sleeve로 인해 예외가 발생함 (0) | 2022.11.14 |
---|---|
오프셋 네이티브 및 오프셋 인식 데이터 시간을 뺄 수 없습니다. (0) | 2022.11.14 |
MVC에서 모델을 어떻게 구성해야 합니까? (0) | 2022.11.05 |
deploy 실행 중 maria db에 문제가 표시됨 (0) | 2022.11.05 |
j클래스별 요소 카운트 쿼리 - 이를 구현하는 가장 좋은 방법은 무엇입니까? (0) | 2022.11.05 |