如何解决无法在NodeJS / ReactJS应用中插入数据,无法返回承诺
我发现无法使用ReactJS将数据导入我的商店。 我有一个节点服务器及其服务的http:// localhost:9000 / products 但是,当获取数据并将其作为JSON传递给reducer时,我收到来自reducer的错误:
TypeError:action.products.reduce不是函数
看起来它正在返回一个承诺而不是JSON。
export async function get () {
return fetch('http://localhost:9000/products').then(response => response.json()).then(response => { return response })
}
export default {get}
API:
import { get } from '../actions/get'
const TIMEOUT = 1000
console.log(get())
export default {
getProducts: (cb,timeout) => setTimeout(() => cb(get()),timeout || TIMEOUT),buyProducts: (payload,cb,timeout) => setTimeout(() => cb(),timeout || TIMEOUT)
}
还有我的减速器功能
const byId = (state = {},action) => {
switch (action.type) {
case RECEIVE_PRODUCTS:
return {
...state,...action.products.reduce((obj,product) => {
obj[product.id] = product
return obj
},{})
}
default:
const { productId } = action
if (productId) {
return {
...state,[productId]: products(state[productId],action)
}
}
return state
}
}
我希望我已经解释好了。任何帮助表示赞赏。
解决方法
通过将API文件更改为以下内容来修复:
let products
fetch('http://localhost:9000/products')
.then(
function(response) {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' +
response.status);
return;
}
response.json().then(function(data) {
products = data
});
}
)
.catch(function(err) {
console.log('Fetch Error :-S',err);
});
export default {
getProducts: (cb,timeout) => setTimeout(() => cb(products),timeout || TIMEOUT),buyProducts: (payload,cb,timeout) => setTimeout(() => cb(),timeout || TIMEOUT)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。