javascript - 尝试使用 fetch put 编辑数据但无法引用正确的 id
问题描述
我基本上是在尝试编辑已经输入的数据女巫获取和放置。问题是我无法使用此代码引用正确的 id:
import { useHistory } from "react-router-dom";
import NewMeetupForm from "../components/meetups/NewMeetupForm";
function EditForm(props) {
const history = useHistory();
function addMeetupHandler(meetupData) {
fetch(
`https://reacttesty-2fbdf-default-rtdb.firebaseio.com/api/book/${props.id}.json`,
{
method: "PUT",
body: JSON.stringify(meetupData),
headers: {
"Content-Type": "application/json",
},
}
).then(() => {
history.replace("/");
});
}
return (
<section>
<h1>Add New Meetupes</h1>
<NewMeetupForm onAddMeetup={addMeetupHandler} />
</section>
);
}
export default EditForm;
在已经存在的对象上,我有一个链接:
<Link to={`/edit-meetup`}>
<button>Edit</button>
</Link>
这将我引导到添加新元素的相同形式,并且我认为在那里我丢失了我想要进行编辑的 ID
这段代码所做的只是创建一个带有 undefined
id 的新对象。我认为给它一个props.id
意志只是简单的工作,因为我用DELETE
很好的方法做了它,我认为我会用 PUT 方法达到相同的结果,但它不是那么简单。如果有人可以提供帮助,那就太好了。我对 fetch 不太了解,我正在学习反应,但我必须参考一些虚拟 API。
解决方案
欢迎来到 Stack Overflow 社区。
请按照以下步骤解决您的问题。
- 像这样在 App.js 或应用程序路由定义的组件中更新相关路由。
<Route path="/edit-meetup/:id"> {/* Get your id */}
<EditForm />
</Route>
EditForm
然后像这样在您的组件中访问该 id 。
import { useHistory, useParams } from "react-router-dom";
import NewMeetupForm from "../components/meetups/NewMeetupForm";
function EditForm(props) {
const history = useHistory();
const { id } = useParams(); // Access to your id
const addMeetupHandler = (meetupData) => {
fetch(
`https://reacttesty-2fbdf-default-rtdb.firebaseio.com/api/book/${id}.json`,
{
method: "PUT",
body: JSON.stringify(meetupData),
headers: {
"Content-Type": "application/json",
},
}
).then(() => {
history.replace("/");
});
}; // It's better if you can use an arrow function here
return (
<section>
<h1>Add New Meetupes</h1>
<NewMeetupForm onAddMeetup={addMeetupHandler} />
</section>
);
}
export default EditForm;
- 将id传递给
Link
也。
<Link to={`/edit-meetup/${id}`}>
<button>Edit</button>
</Link>;
如果您需要进一步的支持,请告诉我。
推荐阅读
- database - Cassandra 约束
- swift - 如何通过按下按钮检查用户是否在正确的区域?迅速
- pandas - 在 Pandas 中读取 csv 时如何使用适当的编码?
- java - 我的蛇游戏运行非常缓慢。有什么办法可以优化吗?
- python - tkinter 的多个帧 - 如何使它们在全屏模式下运行
- oauth - 了解 oAuth 隐式流
- python - DateRangeSlider Bokeh 小部件错误,无法将字符串转换为时间戳日期
- sql - SQL Server 存储过程因错误而无法保存
- swift - 图像未快速显示在单元格上
- git - 使用 username.bitbucket.io 的“找不到文件”?