未处理的拒绝 (TypeError):无法读取未定义的 属性 'map'
Unhandled Rejection (TypeError): Cannot read property 'map' of undefined
我从developers.themoviedb.org那里得到了对象,但真的很失望有什么问题。
对象发送到浏览器,但我不明白怎么扔给我。
我很困惑,需要帮助
如果在中间件中我写 let arr = JSON.parse(response).results;
也是一个错误:
Unexpected token o in JSON at position 1
response with object in browser
data.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();
});
movies.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);
}
movies.action.js
export function fetchMovies() {
return {
type: FETCH_MOVIES_START
}
}
您的数据已经是一个对象。无需解析它。并且每次在解析之前检查参数的类型是否为字符串。
------编辑-----
也试试:
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 或者 return request.response 或像上面那样更改访问响应 .
我从developers.themoviedb.org那里得到了对象,但真的很失望有什么问题。
对象发送到浏览器,但我不明白怎么扔给我。
我很困惑,需要帮助
如果在中间件中我写 let arr = JSON.parse(response).results;
也是一个错误:
Unexpected token o in JSON at position 1
response with object in browser
data.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();
});
movies.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);
}
movies.action.js
export function fetchMovies() {
return {
type: FETCH_MOVIES_START
}
}
您的数据已经是一个对象。无需解析它。并且每次在解析之前检查参数的类型是否为字符串。 ------编辑-----
也试试:
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 或者 return request.response 或像上面那样更改访问响应 .