axrising
@axrising

Нужно ли записывать данные с формы в redux перед отправкой на сервер?

Здравствуйте, возник такой вопрос нужно ли записывать данные с формы в redux перед отправкой на сервер?
Я использую redux toolkit вместе с redux saga, какой стратегии я должен придерживаться при отправки данных на сервер?
Как правильно передать payload в saga Worker с формы, и нужнен ли payload в toolkit?
Буду благодарен за помощь

TOOLKIT
const usersSlice = createSlice({
  name: 'users',
  initialState: {
    data: undefined,
    isAuth: false,
    loginError: '',
  },
  reducers: {
    fetchLogin: (_, { payload }) => payload,
    setUserData: (state, action) => {
      state.data = action.payload
    },
    setAuth: (state, action) => {
      state.isAuth = action.payload
    },
    setLoginError: (state, action) => {
      state.loginError = action.payload
    },
  },
})

export default usersSlice.reducer
export const { setUserData, setAuth, setLoginError, fetchLogin } = usersSlice.actions

SAGA
export function* fetchLoginWorker({ payload }: any): Generator<any> {
  try {
    console.log(payload)
    const response: any = yield call(AuthApi.login, payload)
    localStorage.setItem('token', response.data.accessToken)
    yield put(setAuth(true))
    yield put(setUserData(response.data.user))
  } catch (e) {
    console.log(e.response?.data?.message)
    yield put(setLoginError(e.response?.data?.message))
  }
}

export function* usersSaga() {
  yield takeEvery(fetchLogin.type, fetchLoginWorker)
}


FORM SUBMIT
const onSubmit: SubmitHandler<ILoginInputs> = async (data) => {
    dispatch(fetchLogin(data))
  }
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 1
Не обязательно, по факту вы можете вообще ничего никуда не записывать а прямо из компоненты формы отсылать данные на сервак.

Если же есть смысл делить эти данные с другими компонентами - есть смысл записывать все в стор.
С другой стороны, некоторые олды говорят, что лучше все хранить в сторе и не иметь локальных состояний(это очень спорный подход, как по мне)

Единственный вариант, который можно советовать без сомнения - подумать про UX и докинуть запись не приватных данных пользователя в localStorage, что бы в случае рефреша страницы - они возвращались. (Можно и через аутокомплит, но он какой-то бесячий последнее время, особенно в хроме)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы