Я рекомендую вам ознакомиться с redux
и redux-thunk
.
Для отправки сетевых запросов вам необходимо использовать промежуточное ПО, например redux-thunk
или redux-saga
;
Вот очень простые примеры redux-thunk
//example 1
function myThunkActionCreator(someValue) {
return (dispatch, getState) => {
dispatch({type : "REQUEST_STARTED"});
myAjaxLib.post("/someEndpoint", {data : someValue})
.then(
response => dispatch({type : "REQUEST_SUCCEEDED", payload : response}),
error => dispatch({type : "REQUEST_FAILED", error : error})
);
};
}
// example 2 for conditional dispatching based on state
const MAX_TODOS = 5;
function addTodosIfAllowed(todoText) {
return (dispatch, getState) => {
const state = getState();
if(state.todos.length < MAX_TODOS) {
dispatch({type : "ADD_TODO", text : todoText});
}
}
}
Обновление
Таким образом, процесс отправки данных формы на сервер с использованием redux-thunk
выглядит следующим образом
Когда нажата кнопка отправки и отправлено действие, давайте предположим, что SAVE_USER_TO_SERVER
и объект со всеми пользовательскими данными (имя, адрес электронной почты и т. Д.) Передается, например, для postUserThunkCreator()
(это функция thunk, подобная в приведенных выше примерах).
Затем thunk отправляет запрос на сервер и отправляет данные вместе с ним. А на стороне сервера он сохраняется в базе данных и возвращается
Теперь myAjaxLib.post("/someEndpoint", {data : someValue}).then()
в функции .then()
вы можете проверить ответ, если успешно выполнить другое действие, например, SAVE_USER_TO_SERVER_SUCCESS
в противном случае SAVE_USER_TO_SERVER_FALIURE
;
* Итак, как мы можем видеть, три действия связаны в этом рабочем процессе, а именно:
SAVE_USER_TO_SERVER
SAVE_USER_TO_SERVER_SUCCESS
SAVE_USER_TO_SERVER_FALIURE
Так что я надеюсь, вам ясно, что вы создадите три действия, упомянутых выше.
Ваш вопрос
Нужно ли создавать 3 действия для имени, фамилии и адреса электронной почты?
Ответ: Совсем нет. Только три действия, упомянутые выше.