2017-02-17 5 views
0

Я довольно новый, чтобы реагировать, и у меня проблемы с отправкой действий после вызовов API. В настоящее время я не использую какое-либо промежуточное программное обеспечение, которое обрабатывает асинхронные действия. Я смог реализовать логин, выход из системы и регистрацию, выполняя вызовы async api. Я попытался реализовать вызов api, который получает всех пользователей, и теперь я получаю эту ошибку. Моя функция getProfile() отлично работает с любыми проблемами. Моя функция getUsers() выбрасывает ошибку.React redux async error error

Error: Actions must be plain objects. Use custom middleware for async actions. 

вот мои действия

function profileRecieved(user){ 
    return { 
    type: PROFILE_RECIEVED, 
    user 
    } 
} 

function usersRecieved(users){ 
    type: USERS_RECIEVED, 
    users 
} 

export function getProfile(id){ 
    WebApi.get('/user/'+id, result => { 
    if(result.status !== 200){ 
     console.log("ERROR"); 
    } else { 
     store.dispatch(profileRecieved(result.data)); 
    } 
    }) 
} 

export function getUsers(){ 
    WebApi.get('/users', result => { 
    store.dispatch(usersRecieved(result.data.users)); 
    }) 
} 

вот мой редуктор

const initialState = { 
    profileUser:{ 
    username: "", 
    id:"", 
    email: "" 
    }, 
    users: [] 
}; 

const UserReducer = (state = initialState, action) => { 
    switch(action.type) { 
    case PROFILE_RECIEVED: 
     return Object.assign({}, state, { 
     profileUser: action.user 
     }); 
    case USERS_RECIEVED: 
     return Object.assign({}, state, { 
     users : action.users 
     }); 
    default: 
     return state; 
    } 

и вот мой WebAPI класс

var instance = axios.create({ 
    baseURL: BASE_URL, 
    headers: { 
    Authorization: localStorage.getItem("access_token") 
    } 
}); 

// All requests made with this class will have 
// the Authorization header added to it 
class WebApi{ 

    static get(route, callback){ 

    instance.get(route) 
     .then(response => { 
     callback(response); 
     }) 
     .catch(err => { 
     console.log(err); 
     }); 
    } 

    static post(route, data, callback){ 
    instance.post(route, data) 
    .then(response => { 
     callback(response); 
    }) 
    .catch(err => { 
     console.log(err); 
    }); 
    } 
} 

ответ

1

Вы просто забыли вернуться в действии usersRecieved. Будьте внимательны :)

+0

спасибо, я не могу поверить, что пропустил это. –