javascript - 未处理的拒绝(类型错误): Cannot read property 'map' of undefined

标签 javascript reactjs redux react-redux middleware

我从 developers.themoviedb.org 获取对象,但真的很失望有什么问题。
对象被发送到浏览器,但我不明白如何把它扔给我。
我很困惑,需要帮助
如果在中间件中我写 let arr = JSON.parse(response).results; 也是一个错误:

Unexpected token o in JSON at position 1

response with object in browser

数据.service.js

export const getData = (url) => new Promise((resolve, reject) => {
const request = new XMLHttpRequest();
request.open('GET', url);
request.onload = () =>
    (request.status === 200) ?
        resolve(JSON.parse(request.response).results) :
        reject(Error(request.statusText))
  request.onerror = (err) => reject(err)
  request.send();
});

电影.middleware.js

export const moviesMiddleware = store => next => action => {
if (action.type === FETCH_MOVIES_START) {
    getData(popularMovies).then((response) => {
        let arr = response.results;
        let movies = arr.map((item) => {
           return new MovieEntity(item);
        });
        let data = movies;
        store.dispatch({
            type: FETCH_MOVIES_SUCCESS,
            payload: data
        });
    });
  }
  return next(action);
}

电影.action.js

export function fetchMovies() {
return {
    type: FETCH_MOVIES_START
 }
}

最佳答案

您的数据已经是一个对象。无需解析它。每次解析之前检查参数的 typeOf 是否为字符串。 ------编辑-----

也可以尝试:

  resolve(
   if(typeOf(request.response)=='string')
    JSON.parse(request.response).results 
   else request.response.results
   )

在movies.middleware.js中更改如下

export const moviesMiddleware = store => next => action => {
if (action.type === FETCH_MOVIES_START) {
    getData(popularMovies).then((response) => {
        let arr = response;
        let movies = arr.map((item) => {
           return new MovieEntity(item);
        });
        let data = movies;
        store.dispatch({
            type: FETCH_MOVIES_SUCCESS,
            payload: data
        });
    });
  }
  return next(action);
}

问题是,您正在使用 request.response.results 解析 Promise,然后您再次以与 response.result 相同的方式访问它,或者返回 request.response 或更改上面的访问 response

关于javascript - 未处理的拒绝(类型错误): Cannot read property 'map' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49986020/

相关文章:

javascript - react native : How to set <TextInput/>'s height and width to <View/> container?

javascript - React View 只能在页面重新加载时获取最新数据?

reactjs - 用于构建有效负载的 Flux 标准操作约定是什么?

php - 将转换为 json 字符串的对象发送到 php 脚本

Javascript - 获取元关键字和如果非则不破坏书签

javascript - 如何使用 document.msFullscreenElement !== null(使用 javascript)检测全屏

javascript - jQuery 日期选择器 : Multiple input giving an error

javascript - react & Expressjs : Backend can't 'serve' static frontend

android - React-Native 按钮在 Android 上的格式不正确

javascript - 更新 redux 中的嵌套状态