我正在尝试请求一个没有 ajax 调用的 API(为什么我要导入整个库来简单地进行 ajax 调用?)。
因此,我决定遵循 Redux 文档(我上周迁移的文档)中描述的 fetch 函数流程。
从“isomorphic-fetch”导入提取
因此,我有这个简短的函数:
export function fetchPosts(value) {
return dispatch => {
dispatch(requestPosts(value))
return fetch(Config.serverUrl + '/' + value, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
Authorization: Config.authorizationToken
},
})
.then(response => response.json())
.then(json => dispatch(receivePosts(value, json)))
};
};
但是当我在下一步函数中执行 console.log 时:
function receivePosts(value, json) {
console.log(json);
return {
type: RECEIVE_POSTS,
value,
posts: json.data.children.map(child => child.data)
};
};
我可以看到我的 json 是一个空对象。
网络返回:
一般:
请求网址:https://shelob-v2.dev.blippar.com/v2/categories
请求方法:选项
状态码:200 正常
远程地址:52.25.79.166:443
标题:
访问控制允许 header :授权、内容类型、X-Pouet-UniqueID、X-Pouet-UniqueRunID
访问控制允许方法:PATCH、PUT、DELETE
访问控制允许来源:*
内容长度:0
内容类型:文本/纯文本;字符集=utf-8
日期:2016 年 4 月 27 日星期三 14:14:36 GMT
我做错了什么吗?
最佳答案
您的 redux 语法看起来正确,但看起来该请求是 OPTIONS 请求而不是 GET 请求。尝试将 method: 'GET'
添加到您的提取选项中。
export function fetchPosts(value) {
return dispatch => {
dispatch(requestPosts(value))
return fetch(Config.serverUrl + '/' + value, {
method: 'GET', // here
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
Authorization: Config.authorizationToken
},
})
.then(response => response.json())
.then(json => dispatch(receivePosts(value, json)))
};
};
关于javascript - React js 与 redux fetch 总是返回一个空的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36891968/