다른 모듈의 돌연변이로 rootState에 액세스합니다.
몇 개 있어요vuex
모듈.간단하게 하기 위해서, 내가 직면하고 있는 문제의 예를 들면 다음과 같습니다.
2개 있어요.vuex
모듈 firstModule.js 및 secondModule.js
firstModule.js에는myArray[ ]
상태:
//firstModule
const state = {
myArray: [//has some items]
}
second Module.js에는 외부 API에서 비동기적으로 데이터를 가져오는 액션이 있습니다.
이 작업은 가져온 데이터가 firstModule에 있는지 여부를 검색해야 하는 변환을 커밋합니다. myArray[ ]
가져온 데이터가 firstModule에 있는 경우
myArray[ ]
second Module's에 추가합니다.newArray[ ]
const state = { newArray: [] } const mutations = { addToNewArray: (state, payload) => { function findIyem(value){ return value === payload.data; }; var item = payload.rootData.myArray.find(findItem); state.newArray.push(payload.data); } } const actions = { fetchData: ({commit, rootState}) => { // fetches some data from external API var fetched data = data // data is which I received from fetching commit('addToAnotherArray', {data: data, rootData: rootState.firstModule.myArray} } }
하지만, 여기 문제가 있습니다.
모듈 내의 docs 돌연변이에 따르면 rootState에는 액세스 할 수 없습니다.액션과 getter만이 rootState에 액세스 할 수 있습니다.
rootAtate in modiate에 액세스 할 수 없습니다.상기와 같이 논리를 실행하려면 어떻게 해야 합니까?
위에서와 같이 액션으로 rootState에 접속하여 커밋된 변환에 payload로 전달해야 합니까?
내 경험상, 돌연변이는...vuex
모듈이 설명하는 방식으로 모델에 직접 영향을 미칠 수 있습니다.그래서, 당신의addToNewArray
방법은 단순히 payload 데이터를 주의 데이터에 추가해야 합니다.newArray
소유물.
작업은 돌연변이를 만들 것인지 여부를 결정하기 위해 논리 코드를 실행해야 하는 곳입니다.첫 번째 모듈로 계산하실 수 있습니다.myArray
의 범위 내에서fetchData
액션.그게 베스트 프랙티스야.
단, 꼭 액세스 할 필요가 있는 경우는,rootState
현재와 같이 변수 참조로 전달해야 합니다.
언급URL : https://stackoverflow.com/questions/43494663/access-rootstate-in-mutations-of-different-modules
'programing' 카테고리의 다른 글
MySQL Workbench에서 Blob을 직접 표시하는 방법 (0) | 2023.02.04 |
---|---|
휴지 상태 5 스키마 검증: HBM 파일이 있는 테이블 누락 (0) | 2023.02.04 |
Chrome 송신 요청 오류:TypeError: 원형 구조를 JSON으로 변환하는 중 (0) | 2023.02.04 |
IOUtils.toString(InputStream)에 상당하는 Guava (0) | 2023.02.04 |
Node.js 파일에 쓸 때 디렉토리 생성 (0) | 2023.02.04 |