@basilshine
Frontend developer

Typescript + React + Redux + Thunk как асинхронно вызывать функцию внутри onSubmit?

Возникает проблема при вызове функции loginUser в форме. Где-то я неправильно пишу саму функцию и применяю dispatch, но authApi.login() вообще не вызывается
Вот код чтобы было "понятно" о чем я
export type AuthActionType =
  | SetTokenAction
  | DeleteTokenAction
  | SetUserInfo
  | ResetUserInfo
  | GetUserInfo
  | Logout

export const loginUser = (values: SubmitValues): ThunkAction<Promise<void>, {}, {}, AuthActionType> => {
  return async (dispatch: ThunkDispatch<{}, {}, AuthActionType>): Promise<void> => {
    const userInfo = await authApi.login({
      email: values.email,
      password: values.password,
    })
    dispatch(setToken(userInfo.jwt))
    dispatch(getUserInfo())
  }
}

interface MapDispatchToProps {
  loginUser: (values: SubmitValues) => ThunkAction<Promise<void>, {}, {}, AuthActionType>
}

const mapDispatchToProps = (dispatch: Dispatch): MapDispatchToProps => ({
  loginUser: bindActionCreators(loginUser, dispatch),
})

const api: AuthApi = {
  login(loginData: LoginRequest, config: {}): Promise<LoginResponse> {
    console.log('LoginResponse', 'inlogin')
    return authnApi.post('/login', loginData, config).then(
      (response): LoginResponse => {
        return response.data
      },
    )
  },
}

export default api
  • Вопрос задан
  • 782 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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