【发布时间】:2020-04-02 16:04:22
【问题描述】:
我有以下问题: 我对 Node.js 还是很陌生,我想弄清楚如何构建一个简单的 REST-API 将模拟数据发送到 React。在反应中,我想获取数据并将其呈现在列表中。
这是我目前所拥有的
Node.js:
const Joi = require("@hapi/joi");
const express = require("express");
const cors = require("cors");
const app = express();
app.use(cors());
app.use(express.json());
const posts = [
{
id: 1,
heading: "post 1",
text: "This is a blogpost"
},
{
id: 2,
heading: "post 2",
text: "This is also blogpost"
}
];
app.get("/api/posts", (req, res) => {
res.send(posts);
});
const port = process.env.PORT || 3001;
app.listen(port, () => console.log(`Listening on port ${port}...`));
我的反应代码:
import React, { useState, useEffect } from "react";
const PostList: React.FC = () => {
useEffect(() => {
fetchItems();
}, []);
const [items, setItems] = useState([]);
const fetchItems = async () => {
try {
const data = await fetch("http://localhost:3001/api/posts");
const items = await data.json();
// console.log("HELLO FROM INSIDE OF FETCHITEMS", items);
setItems(items);
} catch (error) {
console.error(error);
}
};
console.log("STATE", items);
return (
<>
{items.map((item, index) => (
<h1 key={index}>{item}</h1>
))}
</>
);
};
export default PostList;
所以我想做的是:
- 从我的 node.js 服务器发送模拟数据博客文章
- 获取服务器 url ./api/posts
- 将 fetch json 对象保存在空状态数组中(项目:[])
- 在我的渲染函数中渲染出来
我想我已经完成了大部分设置,但是当我尝试这样做时,我得到了这个错误。
我猜我必须将所有对象保存在一个数组中,但我该怎么做呢?我以为我已经从节点服务器 posts=[] 做到了。 这是我在设置后的 console.log 状态时得到的。
我是在后端还是前端做呢?你会如何处理这个问题,我认为这是正确的方式吗?
先谢谢了, 埃里克
【问题讨论】:
-
<h1 key={index}>{item}</h1>这里的item可能是Object,所以React 不能渲染它。它应该是字符串/数字或 JSX 元素。
标签: javascript html node.js reactjs