vuex 변환에서 값을 반환하시겠습니까?(새로 생성된 객체의 ID)
vuex 스토어의 한 부분에 개체를 만들고 ID를 다른 개체로 전달하려고 하는데, 돌연변이가 아무것도 반환하지 않기 때문에 이 경우에는 ID를 반환할 수 없습니다.
두 개의 스토어 오브젝트는 다음과 같습니다.
// store/report.js
const state = {
name: 'Untitled Report',
subReportIds: []
};
// store/subReport.js
const state = { ... }
그리고 이 작업을 통해 빈 보고서를 만들고, 다음으로 빈 하위 보고서를 만들고, 새로 생성된 보고서에 하위 보고서 ID를 할당합니다. (하위 보고서는 독립 엔티티이며, 여러 보고서에서 사용할 수 있으므로 저장 영역이 다릅니다.)
const actions = {
createNewReport({ state, commit }) {
commit(mutationTypes.CREATE_NEW_REPORT)
// below doesn't work - i can't get return from mutation
let newSubreportId = commit(mutationTypes.ADD_NEW_SUBREPORT)
// if this worked, i'd then do something like
commit(mutationTypes.ADD_SUBREPORT_TO_REPORT, newSubreportId)
}
};
어떻게 하면 위와 같은 일을 할 수 있을까요?
그러니 내게 가장 좋은 방법은 돌연변이를 저지르는 대신 행동을 취하는 거야Vuex 소스의 메서드를 보면commit반환하지 않고 실행(공허도 마찬가지)만 합니다.dispatch액션에서 반환하는 값(함수)을 반환합니다.
제 행동에 대해서는, 위에서 말한 것처럼 작문할 수 있도록, 항상 약속을 되돌립니다.여기 예가 있습니다.
fetchSomething ({ commit }) {
return mockApiGetIds()
.then(response => {
commit({
type: SOME_MUTATION,
ids: response
});
return response;
});
},
면책사항: 사실 좋은 생각인지는 모르겠지만, 적어도 효과가 있는 것 같고, 나에게 있어 행동과 약속을 사용하거나 행동에서 아이디를 생성하는 것보다 더 예쁘다고 느껴집니다.
당신의 돌연변이로, 당신은 논쟁을 통과할 수 있습니다.변환에서 값을 반환하려면(새로 생성된 ID와 같이) 해당 인수의 자리 표시자에 씁니다.
someMutation(state, arg){
//...
arg.out = {
status : "succeed"
}
}
//...
this.$store.commit('someMutation', arg);
if(arg.out !== "succeed") console.log("ERROR");
돌연변이를 끝내고 돌아오는 것만으로도 효과가 있으면 좋을 텐데...
문제를 추적하는 업투표를 해주세요.https://github.com/vuejs/vuex/issues/1437
향후에는 다음과 같은 일이 발생할 수 있습니다.
let myReturn = this.$store.commit('ADD_THING",{"name":"new_thing"});
// 'ADD_THING' adds a thing to an numerically indexed object and then returns the number.
console.log(myReturn); // {"id":42,"datestamp":1541145883085}
언급URL : https://stackoverflow.com/questions/42404925/return-value-from-vuex-mutation-id-for-newly-created-object
'programing' 카테고리의 다른 글
| Vue array.splice 목록에서 잘못된 항목 제거 (0) | 2022.07.17 |
|---|---|
| Vuex는 객체에 새로운 어레이 속성을 추가하고 사후 대응 방식으로 변환 내부의 객체에 요소를 푸시합니다. (0) | 2022.07.17 |
| 인스턴스에서 컴포넌트에 액세스하는 VueJ (0) | 2022.07.17 |
| 서드파티 라이브러리를 사용한 VueJ 인쇄 요소 (0) | 2022.07.17 |
| C가 C++보다 현저하게 빠릅니까? (0) | 2022.07.17 |