Redux Toolkit을 사용하여 다른 감속기 함수 (동일한 슬라이스 내)에서 감속기 함수를 호출 할 수 있습니까?

Asaf Sitner

이 작은 모듈 관리 슬라이스가 있습니다.

const WorkspaceSlice = createSlice({
    name: "workspace",
    initialState: {
        activeModule: null,
        modules:
        {
            ["someModule"]: { ...moduleRenderingData },
        },
    },
    reducers: {
        setActiveModule(state, action)
        {
            state.activeModule = action.payload;
        },
        addModule(state, action)
        {
            const { moduleName, renderingData } = action.payload; 
            if (!state.modules[moduleName])
            {
                state.modules[moduleName] = renderingData;
            }

            // state.activeModule = moduleName; <- basically the same as 'setActiveModule'
            this.setActiveModule(state, action.payload.module); // <- 'this' is undefined
        },
    },
});

export default WorkspaceSlice;

내가하려는 것은 중복 코드를 갖지 않도록 setActiveModule내부에서 호출 하는 addModule것이지만 this정의되지 않았기 때문에 오류가 발생 합니다.
한 감속기를 다른 감속기에서 호출하는 방법이 있습니까? 그 구문은 무엇입니까?
그렇지 않은 경우, 내가 모두 유지하려는 가정, 다른 방법으로이 기능을 달성 할 수 addModulesetActiveModule개별 행동으로?

마커 릭슨

slice에서 반환 객체 createSlice에는 slice.caseReducers이와 같은 상황에 도움이되도록 으로 전달한 각 개별 case reducer 함수 포함됩니다 .

따라서 다음을 수행 할 수 있습니다.

addModule(state, action) {
    const { moduleName, renderingData } = action.payload; 
    if (!state.modules[moduleName]) {
        state.modules[moduleName] = renderingData;
    }

    WorkspacesSlice.caseReducers.setActiveModule(state, action);
},

또한 감속기 함수에는 this포함 된 클래스 인스턴스가 없기 때문에는 없습니다. 그것들은 단지 기능입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관