Отправка действия Redux - PullRequest
       18

Отправка действия Redux

1 голос
/ 14 июля 2020

В моем действии redux у меня одно действие будет вызываться другими двумя действиями, код ниже:

export const addParticipantFromPopupRequest = (participant, project_id, currentStep) => async (dispatch) => {
    const result = await addParticipant(participant)
    dispatch({ type: PARTICIPANT_ADD, payload: result })
    dispatch(updateProjectStep(project_id, currentStep))
}
export const handleFinalStep = (projectId, currentStep) => async (dispatch) => {
    dispatch(updateProjectStep(projectId, currentStep))
}
const updateProjectStep = (projectId, currentStep) => async (dispatch, getState) => {
    dispatch({ type: MODAL_STATUS_CHANGE, payload: { projectId, currentStep } })
    dispatch({ type: PROJECT_PROCESS_LIST_UPDATE, payload: { project_id: projectId, currentStep } })
    const { projectsProcessListsReducer } = getState()
    localStorage.setItem("projectsProcessLists", JSON.stringify(projectsProcessListsReducer))
}

Если я не использую отправку при вызове updateProjectStep, addParticipantFromPopupRequest и handleFinalStep не могут работать правильно.

Мой вопрос: могу ли я вызвать действия отправки таким образом и правильно ли это? Зачем мне нужна «отправка», когда я вызываю updateProjectStep в других действиях, а не вызываю имя функции напрямую?

1 Ответ

0 голосов
/ 14 июля 2020

У меня вопрос: могу ли я таким образом вызывать действия отправки и правильно ли это?

Да. Вы всегда должны вызывать с помощью dispatch.

Почему мне нужна «отправка», когда я вызываю updateProjectStep в других действиях, а не напрямую вызываю имя функции?

If вы вызываете updateProjectStep напрямую без dispatch, это станет обычным вызовом функции js, и ваш store не узнает об этом. Диспетчеризация - единственный способ вызвать изменение состояния в store.

В redux store - это единственный источник истины , dispatch вы Использование на самом деле происходит от store (store.dispatch).

Если вы вызываете функцию в обычном режиме, то она не узнает об store. Это действие не пройдет через middlewares (преобразователь / сагу), о котором store знает, и не будет выполнять обновление store через reducers.

Если store не обновлен, ваши компоненты не получат никаких обновлений. В конце концов, ваш пользовательский интерфейс перестанет отображаться.

Подробнее об отправке можно узнать здесь .

...