рдХрдо рдХрд░рдиреЗ рд╡рд╛рд▓реА
import getInitialState, {
formDataInitialState as initialState,
} from '../helpers/initialState';
import { HANDLE_FIELD_DONE, ON_FIELD_CHANGE, RESET } from '../actionCreators';
export default (state = initialState, { type, payload }) => {
switch (type) {
case RESET: {
return getInitialState().formDataInitialState;
}
case ON_FIELD_CHANGE: {
const { name } = payload;
return {
...state,
[name]: '',
}
}
case HANDLE_FIELD_DONE: {
const { name, value } = payload;
return {
...state,
[name]: value,
}
}
}
return state;
};
рдпрд╣рд╛рдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреЗрд╡рд▓ рд╕реНрд╡рд┐рдЪ рдирд┐рд░реНрдорд╛рдг рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИрдЧрд╛рдерд╛
import { all, put, select, fork, takeEvery } from 'redux-saga/effects';
import { runServerSideValidation } from '../actionCreators';
import { HANDLE_FIELD } from '../actionCreators';
function* takeHandleFieldAction() {
yield takeEvery(HANDLE_FIELD, function*({ payload }) {
const { validation, formData } = yield select(
({ validation, formData }) => ({
validation: validation[payload.name],
formData,
})
);
const valueFromState = formData[payload.name];
if (payload.value !== valueFromState) {
const { name, value } = payload;
const { validator } = validation.serverValidator;
yield put(
runServerSideValidation({
name,
value,
validator,
formData,
})
);
}
});
}
export default function* rootSaga() {
yield all([fork(takeHandleFieldAction())]);
}
рд╕рдЧрд╛рдУрдВ рдореЗрдВ, рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдкрдврд╝рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИред рд╕рд┐рд░реНрдл рдЧрд╛рдерд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд╕рд░реА рдирд┐рдЧрд╛рд╣ред рдЗрд╕рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдЧрд╣рд░рд╛ рдШреЛрдВрд╕рд▓рд╛ рд╣реИред рдЖрдк рдмреЗрд╢рдХ рдЧрд╣рд░рд╛рдИ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЕрддрд┐рд░реЗрдХ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред
import { all, put, select, fork, takeEvery } from 'redux-saga/effects';
import { runServerSideValidation } from '../actionCreators';
import { HANDLE_FIELD } from '../actionCreators';
function* takeHandleFieldWorker({ payload }) {
const { validation, formData } = yield select(
({ validation, formData }) => ({
validation: validation[payload.name],
formData,
})
);
const valueFromState = formData[payload.name];
if (payload.value !== valueFromState) {
const { name, value } = payload;
const { validator } = validation.serverValidator;
yield put(
runServerSideValidation({
name,
value,
validator,
formData,
})
);
}
}
function* takeHandleFieldWatcher() {
yield takeEvery(HANDLE_FIELD, takeHandleFieldWorker);
}
export default function* rootSaga() {
yield all([fork(takeHandleFieldWatcher())]);
}
рдРрд╕реЗ рдЪреЗрдХ рднреА рд╣реИрдВ рдЬреЛ рдпрд╛ рддреЛ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХреЛ рдмрдврд╝рд╛ рджреЗрдВрдЧреЗ, рдпрд╛ рдЧрд╛рдерд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдЬрд┐рд╕рд╕реЗ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдмрд┐рдЧрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред