반응형
vuex에서 {dispatch, commit }에 대한 유형은?
나는 뷔제스 타입스크립트 프로젝트를 받았고 vuex 매장에서 다음과 같은 것을 받았다.
async getUserProfile ({ dispatch, commit }: any) {}
음 나는 원하지 않는다.any
왜냐하면 그것은 형편없고 당신은 편집자의 도움/완료력이 없기 때문이다.나는 이걸 발견했어.import { Dispatch, Commit } from "vuex";
하지만 어떻게 하면 그 정보를{ dispatch, commit }: any
당신이 사용하는 것은ActionContext<S, R>
, Vuex가 하는 것처럼:
getUserProfile( context: ActionContext<S, R>) {}
어디에S
이다State
그리고R
이다RootState
.
그럼 네가 전화해라.dispatch
그리고commit
문맥에서 벗어난:
context.dispatch('action')
context.commit('mutation')
다음 파일에서 사용 가능한 vuex 유형을 확인하십시오.
node_modules/vuex/types/index.d.ts
// 라인 49 :
export interface Commit {
(type: string, payload?: any, options?: CommitOptions): void;
<P extends Payload>(payloadWithType: P, options?: CommitOptions): void;
}
다음과 같이 ActionContext 대신 이를 가져와서 사용할 수 있다.
import { Commit } from 'vuex';
const actions = {
loadUser ({ commit }: { commit: Commit }, user: any) {
commit('setUser', user);
},
...
};
도움이 되기를 바라며 :)
원한다면 컨텍스트 객체를 파괴할 수 있다.
import { ActionContext } from 'vuex';
import { RootState } from './types';
const actions = {
// destructured
loadUser ({ commit }: ActionContext<RootState, RootState>, user: any) {
commit('setUser', user);
},
// not destructured
loadUser (context: ActionContext<RootState, RootState>, user: any) {
context.commit('setUser', user);
},
};
vuex에서 Commit type을 가져오면 된다.
import { Commit } from "vuex";
다음과 같은 작업에 사용:
changeNumber({ commit }: { commit: Commit }, new_number: number) {
commit("setNewNumber", new_number);
}
참조URL: https://stackoverflow.com/questions/50375281/what-are-the-types-for-dispatch-commit-in-vuex
반응형
'Programing' 카테고리의 다른 글
지도를 구현하고 삽입 순서를 유지하는 Java 클래스? (0) | 2022.05.22 |
---|---|
새로 고침 시 VueJs 페이지 404 제공 (0) | 2022.05.22 |
오류 수정 방법: 구현되지 않음: 탐색(해시 변경 제외) (0) | 2022.05.22 |
Vuejs에서 구성 요소를 렌더링하기 전에 데이터 가져오기 (0) | 2022.05.22 |
우리 리눅스 앱에서 libc(glibc)의 역할은? (0) | 2022.05.22 |