【发布时间】:2021-12-08 19:53:58
【问题描述】:
我希望能够撰写评论并显示所有书面评论(目前还没有,因为页面尚未构建)。这是我第一次做这样的项目,但我无法让它工作。
App.js。我希望 const fetchReviews 获取并显示所有已撰写的评论,我希望 const postReview 简单地将新评论发布到页面。
import React, {useState, useEffect} from "react";
import { NewReview } from "./NewReview.js";
import { AllReviews } from "./AllReviews";
const reviewsURL = "http://localhost:8080/reviews"
export const App = () => {
const [existingReviews, setExistingReviews] = useState([])
const [newReview, setNewReview] = useState('')
const fetchReviews = () => {
fetch(reviewsURL)
.then(response => response.json())
.then((json) => {
setExistingReviews(reviews)
}).catch(error => {
console.log(error.message)
})
}
useEffect(() => {
fetchReviews();
}, []);
const postReview = (event) => {
event.preventDefault();
fetch(reviewsURL, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({message: newReview})
})
.then (response => response.json())
.then (() => {
fetchReviews();
setNewReview('')
}).catch(error => {
console.log(error.message)
})
}
return (
<>
<NewReview
newReview={newReview}
setNewReview={setNewReview}
handlesubmit={postReview}
/>
{<AllReviews
allReviews={existingReviews}
/>}
</>
)
}
Index.js 将充当我的服务器,我使用的是本地主机。我不会使用 mongo/mongoose。
在过去的两周里,我已经尝试了很多不同的事情,阅读了一堆关于 Stack 的问题和答案,我尝试了 import()、require()、更新 json 包,但我被卡住了。这让我想知道AllReviews 和NewReviews 的导入和使用是否接近正确?
请帮忙,我在这上面花了很多时间。
import express from 'express'
import { NewReview } from '../frontend/src/NewReview.js';
import { AllReviews } from '../frontend/src/AllReviews.js';
const PORT = process.env.PORT || 8080;
const app = express();
app.get("/", (request, response) => {
response.json({ message: "Hello from server!" });
});
// GET all reviews
app.get("/reviews", (request, response) => {
response.status(201).json(AllReviews)
});
//POST a new review
app.post('/reviews', async (request, response) => {
try {
response.status(201).json(NewReview)
}
catch (err) {
response.status(400).json({ message: 'Sorry, could not save review to the database', errors: err.errors
})
}
})
app.listen(PORT, () => {
console.log(`Server listening on http://localhost:${PORT}`);
});
NewReview.js
import React from "react";
export const NewReview = ({newReview, setNewReview, handleSubmit}) => {
return(
<section className="newReviewContainer">
<form onSubmit={handleSubmit}>
<label>
<textarea
placeholder="Write your review here"
rows="3"
onChange={event => setNewReview(event.target.value)}
value={newReview}>
</textarea>
</label>
<button className="sendReview"
type="submit">
<p>SEND REVIEW</p>
</button>
</form>
</section>
)
}
【问题讨论】:
-
你去
localhost:8080/时收到回复信息了吗? -
我什至无法打开本地主机,终端一直告诉我事情有误。我已经阅读了这些错误并试图纠正它们两周。现在我在 NewReview.js 的
上被 ''SyntaxError: Unexpected token '<'困住了(附上问题中的代码)... -
您无需将前端文件导入服务器
-
@WebbH 哦!这确实表明我错了。谢谢!
-
欢迎来到 Stack Overflow!请不要将解决方案公告编辑到问题中。接受(即单击旁边的“勾选”)现有答案之一,如果有的话。如果现有答案尚未涵盖您的解决方案,您还可以创建自己的答案,甚至接受它。比较*.com/help/self-answer
标签: javascript reactjs post get