Я использую react, redux, axios и redux-thunk для обработки асинхронности.
У меня есть ощущение, что решение будет очевидным, но по какой-то причине я не могу сопоставить массив пользователей (полученный из локального API экспресса/узла) и отобразить каждого пользователя. Информация о пользователе будет зарегистрирована в консоли, но...
<p>NO USERS FOUND</p>
... вместо этого компонент отображается на экране.
Вот мой репозиторий: https://github.com/tedjames/reduxTest
И вот как выглядит мой компонент:
import React, { Component } from 'react';
import { connect } from 'react-redux'
import { getUsers } from '../redux/actions'
class App extends Component {
componentWillMount() {
console.log(this.props);
this.props.getUsers();
}
render() {
if (this.props.users[1]) {
this.props.users.map((user) => {
console.log("USER FOUND!");
console.log(user.email);
return <p key={user.id}>USER FOUND: {user.email}</p>
});
} else {
return <p>NO USERS FOUND</p>
}
}
}
const mapStateToProps = state => {
return {
users: state.admin.users
};
};
export default connect(mapStateToProps, { getUsers })(App);
И это мое действие, которое использует axios для получения пользователей:
import axios from 'axios'
import { GET_USERS } from './types'
export const getUsers = () => {
return (dispatch) => {
axios.get('http://localhost:3090/users')
.then(res => {
console.log("<-- // DATA RECEIVED FROM SERVER // --> ");
console.log(res);
dispatch({ type: GET_USERS, payload: res.data })
})
.catch(({ response }) => {
console.log("// ERROR RECEIVED FROM SERVER //");
console.log(response);
});
}
};