React Native & Redux - ошибка: действия должны быть простыми объектами. Использовать пользовательское промежуточное ПО для асинхронных действий - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь создать собственное приложение с Redux и получаю следующую ошибку, связанную с моим файлом Actions:

Ошибка: действия должны быть простыми объектами. Использовать пользовательское промежуточное ПО для асинхронных действий

Кто-нибудь понимает, что здесь происходит? Вот соответствующий код:

import axios from 'axios' //http client
import {API_URL} from '../utils/constants'

export const FETCH_USER = 'fetch_user'

export const editProfileUser = async (email, password, name, location, aboutMe, memberSince, 
   picture) => {
 try{
 const response = await axios({
 method: 'POST',
 url: `${API_URL}/api/get_token`,
 data: {
  email,
  password
 }
 })
 const {token} = response.data
 const userResponse = await axios({
  method: 'POST',
  url: `${API_URL}/api/edit_user_profile`,
  headers: {
    Authorization: `${token}`
  },
  data: {
    name,
    location,
    aboutMe,
    memberSince,
    picture
  }
})

console.log("userResponse.data", userResponse.data)

return (
  {
    type: FETCH_USER,
    payload: {
      token,
      email,
      password
    }
  }
)


} catch(err){
console.log("Exception in actions/user/editProfileUser err", err)
}
}

1 Ответ

0 голосов
/ 23 октября 2019

Похоже, что вы пытаетесь выполнить асинхронное действие, которое не является частью Redux, вам нужно либо обработать запрос извне, либо использовать асинхронную библиотеку с избыточностью, такую ​​как redux-observable или redux-saga

То, что вы можете сделать, это вызвать ваше действие после завершения обещания:

axios({
      method: 'POST',
      url: `${API_URL}/api/edit_user_profile`,
      headers: {
        Authorization: `${token}`
      },
      data: {
        name,
        location,
        aboutMe,
        memberSince,
        picture
      }
    }).then(({token, email, password}) => {
     // Dispatch your action with the values you want to store
     dispatch(editProfileUser(token, email, password))
})

Из избыточных документов:

Действия являются полезными даннымиинформации, которая отправляет данные из вашего приложения в ваш магазин. Они являются единственным источником информации для магазина.

Действия отвечают только за отправку данных, но не за их получение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...