[英]How to navigate to the update/detail page after a POST in RTK query
我在 REACT RTK 查詢中有一個帶有 POST 的表單,然后它應該導航到第二步,但為此我需要知道新創建記錄的 ID。 id 不是在 POST 中發送的,而是在后端自動遞增的。 我不想直接導航到列表視圖來獲取該 id。
const [addMyModel] = useNewMyModelMutation();
const handleSubmit = (e: { preventDefault: () => void; }) => {
e.preventDefault();
const my_model = {
"user_id": user_id,
"date_time_field": new Date(),
"icm": icmChoice,
...
};
dispatch(setUniqueFilters(unique_filters))
//localStorage.setItem('unique_filters', JSON.stringify(unique_filters))
//localStorage.setItem('selection_positions', JSON.stringify(positions))
//localStorage.setItem('my_model', JSON.stringify(my_model))
addMyModel(my_model)
push(`/icm/mymodels/list`) // push(`/icm/mymodels/${answer_question}`);
最好的解決方案是什么?
這很簡單,但前提是您的 API 在 POST 響應中返回新創建的項目(這是 RESTfull API 所期望的)。 如果是這樣 - 只需等待鈎子的回答:
const data = await addMyModel(my_model).unwrap()
// id should be in `data`
考慮到突變“觸發器”function 返回 Promise,您可以像往常一樣使用它:
addMyModel(my_model).then(newItem => {
if ("data" in newItem) {
const expectedId = item.data.id;
// use you expectedId
}
});
const [addMyModel, result] = useNewMyModelMutation();
...
const handleSubmit = (e: any) => {
e.preventDefault();
const my_model = {
"user_id": user_id,
"date_time_field": new Date(),
"icm": icmChoice,
...
};
addMyModel(my_model)}
result.status === "fulfilled" && push(`/icm/mymodels/update/step2/${result.data["id"]}`)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.