Итак, я пытаюсь реализовать действие, которое асинхронно переводит текущего пользователя в онлайн из моего Rails Backend, используя axios.
Когда он успешно дает ответ: я получаю следующую ошибку:
Unhandled Rejection (TypeError): Invalid attempt to spread non-iterable instance
Вот как выглядит response.data:
user: {
id: 4,
first_name: Julien,
last_name: Corb,
is_subscribed: true
}
store.js:
import { createStore, applyMiddleware } from "redux";
import thunk from 'redux-thunk';
import rootReducer from "./reducers";
const store = createStore(
rootReducer,
applyMiddleware(thunk)
);
export default store;
actions.js
import { CREATE_USER, PROPAGATE_LOGIN, PROPAGATE_LOGOUT } from "./actionTypes";
import axios from 'axios';
export const getCurrentUser = () => {
return dispatch => {
axios.get("/users/get_current_user", {})
.then(response => {
if (response.data.user) {
dispatch(propagateLogin(...response.data)); //the error occurs here
} else {
dispatch(propagateLogout());
}
});
};
};
export const propagateLogin = (user) => ({
type: PROPAGATE_LOGIN,
payload: {
user
}
});
export const propagateLogout = () => ({
type: PROPAGATE_LOGOUT,
payload: { }
});
users.js редуктор:
import { CREATE_USER, PROPAGATE_LOGIN, PROPAGATE_LOGOUT } from "../actionTypes";
const initialState = {
user: null
};
export default function(state = initialState, action) {
switch (action.type) {
case CREATE_USER: {
}
case PROPAGATE_LOGIN: {
return {
...state,
user: action.payload
}
}
case PROPAGATE_LOGOUT: {
return {
...state,
user: null
}
}
default:
return state;
}
}
Впервые я получаю эту ошибку, я чувствую, что что-то не так с установкой начального пользовательского состояния на null
; но проблема может быть и в другом.