【发布时间】:2020-11-09 10:12:13
【问题描述】:
基本上,每当我在 handleDelete 函数中删除项目时,它都会返回主页,我想显示一条消息,说明您的产品已成功删除约 5 秒。
在我的 index.js 中,我首先将 message 设置为 false。并且在我的 ProductAttribute 中,每当我单击它时,设置的消息都会为真,并将在我的 UI 中的 Index.js/ 中显示该消息。
我的句柄删除函数
import React, { useState } from "react";
import { Header, Button, Modal } from "semantic-ui-react";
import axios from "axios";
import baseUrl from "../../utils/baseUrl";
import { useRouter } from "next/router";
function ProductAttributes({ description, _id }) {
const [modal, setModal] = useState(false);
const router = useRouter();
async function handleDelete() {
const url = `${baseUrl}/api/product`;
const payload = { params: { _id } };
await axios.delete(url, payload);
router.push("/");
setMessage(true);
setTimeout(function () {
setMessage(false);
}, 5000);
}
在我的 Index.js 中。我的 useState 中的 setMessage 没有从 ProductAttributes 文件中调用。
import React, { useEffect, useState } from "react";
import axios from "axios";
import ProductList from "../components/Index/ProductList";
import baseUrl from "../utils/baseUrl";
import { Message, Container } from "semantic-ui-react";
function Home({ products }) {
const [message, setMessage] = useState(false);
return (
<>
<Container>
{message ? (
<Message
deleted
icon="checked"
color="red"
content=" Product Successfully Deleted"
/>
) : (
""
)}
</Container>
<ProductList products={products}></ProductList>
</>
);
}
如何使这个 setMessage 在 ProductAttributes 中可调用?我在父子关系方面做得对吗?还是应该将子项中的 useState 带给父项?
【问题讨论】:
-
请将代码发布为文本而不是屏幕截图。
-
我会编辑它。等等
-
@Code-Apprentice 它已经被编辑过了。你有答案吗?
-
@BloodyLogic 我已经对其进行了编辑并将其转换为代码。
标签: javascript reactjs react-router use-state