【发布时间】:2020-06-16 14:11:49
【问题描述】:
我正在尝试从 React & Redux 中的 movieDB api 映射数据并收到错误:
Uncaught TypeError: Cannot read property 'results' of undefined
为了更好地理解,这是我的代码。
reducers/moviesReducer.js
const initialState = {
isFetchingMovies: false,
isFetchedMovies: false,
movieList: [],
fetchingMoviesError: null
}
export const popularMoviesReducer = (state = initialState, action) => {
switch (action.type) {
case "FETCHING_POPULAR_MOVIES_START":
return { ...state, isFetchingMovies: true, fetchingMoviesError: null }
case "FETCHING_POPULAR_MOVIES_SUCCESS":
return {
...state,
isFetchingMovies: false,
isFetchedMovies: true,
movieList: action.data,
fetchingMoviesError: null
}
case "FETCHING_POPULAR_MOVIES_FAILURE":
return { ...state, fetchingMoviesError: action.data.error }
default:
return state
}
}
reducers/index.js
import { combineReducers } from "redux"
import { popularMoviesReducer } from "./moviesReducer"
const rootReducer = combineReducers({
popularMoviesReducer
})
export default rootReducer
actions/index.js
export const fetchPopularMovies = () => {
return async dispatch => {
dispatch({ type: "FETCHING_POPULAR_MOVIES_START" })
try {
const res = await axios.get(url)
dispatch({
type: "FETCHING_POPULAR_MOVIES_SUCCESS",
data: { popularMovies: res.data }
})
} catch (err) {
dispatch({
type: "FETCHING_POPULAR_MOVIES_FAILURE",
error: { error: "Something went wrong" }
})
}
}
}
组件/Popular.js
import React, { Component } from "react"
import { connect } from "react-redux"
import { fetchPopularMovies } from "../actions/index"
class Popular extends Component {
componentDidMount() {
this.props.dispatch(fetchPopularMovies())
}
render() {
const { isFetchingMovies, movieList } = this.props
return isFetchingMovies ? (
<p>Loading...</p>
)
:
(
<div>
{
movieList && movieList.popularMovies.results.map(movie => {
<p>{movie.title}</p>
})
}
</div>
)
}
}
const mapStateToProps = state => {
return {
isFetchingMovies: state.popularMoviesReducer.isFetchingMovies,
movieList: state.popularMoviesReducer.movieList
}
}
export default connect(mapStateToProps)(Popular)
每当我必须在我的组件中显示一些数据时,我总是会遇到这种问题。我最终需要知道如何摆脱它!
更新:这是 React-Dev-Tools 中 Popular.js 中内容的屏幕截图。 Screenshot
【问题讨论】:
标签: arrays reactjs redux thunk