帮助,我无法显示来自服务器的数据。在控制台中,我看到它们来了,但是当我尝试访问数组或通过map调用它时,结果是不确定的。实施的问题可能出在哪里? Redux中的新手,如果可能的话,我请您详细回答。
App.js
import React from 'react';
import {Component} from "react";
import './App.css';
import {connect} from 'react-redux';
import {fetchUsersListRequest} from "./action/users";
class App extends Component {
componentDidMount() {
const {usersData} = this.props;
usersData("https://reqres.in/api/users?page=2");
}
render() {
const {users} = this.props;
return (
<div className="apiList">
<ul>
{users.map(userItem =>
<li>{userItem}</li>
)}
</ul>
</div>
);
}
}
function mapStateToProps(state) {
return {
states: state.cars,
users: state.users
}
}
function mapDispatchToProps(dispatch) {
return {
addCar: (newCar) => {
dispatch({type: 'NEW_CAR', payload: newCar})
},
usersData: (url) => {
dispatch(fetchUsersListRequest(url))
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(App);
store.js
import {combineReducers, createStore, applyMiddleware} from 'redux';
import thunk from "redux-thunk";
import reducers from './reducers/reducers';
import usersList from './reducers/usersList';
const allReducers = combineReducers({
cars : reducers,
users: usersList
})
let store = createStore(allReducers,
applyMiddleware(thunk));
export default store;
reducer.js
const initialState = [];
export default function usersList(state = initialState, action) {
switch(action.type) {
case "USERS_LIST_DATA":
return action.users
default:
return state;
}
action.js
export function fetchUsersList(users) {
return {
type: "USERS_LIST_DATA",
users
}
}
export function fetchUsersListRequest(url) {
return(dispatch)=> {
fetch(url)
.then(response => {
if (!response.ok) {
throw new Error(response.statusText);
}
return response;
}
)
.then(response => response.json())
.then(response => dispatch(fetchUsersList(response)))
}
}
答案 0 :(得分:1)
那是因为您的用户未直接包含在响应中。因此,您需要像这样分配用户:
export function fetchUsersListRequest(url) {
return(dispatch)=> {
fetch(url)
.then(response => {
if (!response.ok) {
throw new Error(response.statusText);
}
return response;
}
)
.then(response => response.json())
.then(response => dispatch(fetchUsersList(response.data)))
}
}