当前位置: 首页 > 知识库问答 >
问题:

如何在React中有条件地执行POST请求?

徐佐
2023-03-14

首先,请看一下代码。

    const [detailTitle, setDetailTitle] = useState(actionItemArray[activeRow].TITLE);
    const [detailDesc, setDetailDesc] = useState(actionItemArray[activeRow].DESCRIPTION);

    //Unix time 변환 함수
    function getUnixTime(t) {
        const date = new Date(t * 1000);
        const year = date.getFullYear();
        const month = '0' + (date.getMonth() + 1);
        const day = '0' + date.getDate();
        return year.toString().substr(-2) + '-' + month.substr(-2) + '-' + day.substr(-2);
    }

    const [detailStartDate, setDetailStartDate] = useState(getUnixTime(actionItemArray[activeRow].START_DATE));
    const [detailDueDate, setDetailDueDate] = useState(getUnixTime(actionItemArray[activeRow].DUE_DATE));

    const [detailPriority, setDetailPriority] = useState(actionItemArray[activeRow].P_PK);
    const [detailStep, setDetailStep] = useState(actionItemArray[activeRow].STEP_PK);

    const [disabled, setDisabled] = useState(true);
    const [disableTag, setDisableTag] = useState(true);

    const detailTitleChange = (e) => {
        setDetailTitle(e.target.value);
    };

    const detailDescChange = (e) => {
        setDetailDesc(e.target.value);
    };

    const detailStartDateChange = (e) => {
        setDetailStartDate(e.target.value)
    };

    const detailDueDateChange = (e) => {
        setDetailDueDate(e.target.value)
    };

对于优先级和步骤,我给出了onChange事件,因为它是一个选择表单。

    const updateActionItem = () => {
        const url = '/api/work/update-action-item';
        const data = {
            ACTION_PK : actionItemArray[activeRow].ACTION_PK,
            OWNER_PK : actionItemArray[activeRow].owner.USER_PK,
            TITLE : detailTitle,
            DESCRIPTION: detailDesc,
            START_DATE : detailStartDate,
            DUE_DATE : detailDueDate,
            P_PK : detailPriority,
            STEP_PK : detailStep,
            updateCols: ['TITLE', 'DESCRIPTION']
        };
        post(url, data)
        .then((res) => {
            alert('수정되었습니다');
            console.log(res);
        })
        .catch((error) => {
            console.log(error)
        });
    };

此函数用于POST请求。我将每个编辑的数据发送到DB。

但是数据对象,您可以看到updateCols:[]。

在这个数组中,我必须放置已更改的属性。

例如,如果我更改标题、说明和开始日期,我必须将数组更改为

updateCols : ['TITLE', 'DESCRIPTION', START_DATE]

我觉得不可能每次都能查到这张申请表,所以我觉得这张申请表有问题。

有人可能只编辑标题,有人可能编辑每个属性。这意味着我必须有条件地更改POST申请表。

我需要一些智慧。请帮助!

共有1个答案

国言
2023-03-14

像这样的?

const [old, setOld] = useState({});
   
const updateActionItem = () => {
     const url = '/api/work/update-action-item';
     let data = {
         ACTION_PK : actionItemArray[activeRow].ACTION_PK,
         OWNER_PK : actionItemArray[activeRow].owner.USER_PK,
         TITLE : detailTitle,
         DESCRIPTION: detailDesc,
         START_DATE : detailStartDate,
         DUE_DATE : detailDueDate,
         P_PK : detailPriority,
         STEP_PK : []
     };
     
     data.ACTION_PK!==old.ACTION_PK?data.STEP_PK.push('ACTION_PK'):null;
     data.OWNER_PK!==old.OWNER_PK?data.STEP_PK.push('OWNER_PK'):null;
     data.TITLE!==old.TITLE?data.STEP_PK.push('TITLE'):null;
     data.DESCRIPTION!==old.DESCRIPTION?data.STEP_PK.push('DESCRIPTION'):null;
     data.START_DATE!==old.START_DATE?data.STEP_PK.push('START_DATE'):null;
     data.DUE_DATE!==old.DUE_DATE?data.STEP_PK.push('DUE_DATE'):null;
     data.P_PK!==old.P_PK?data.STEP_PK.push('P_PK'):null;
     
     setOld(data);
     
     post(url, data)
     .then((res) => {
         alert('수정되었습니다');
         console.log(res);
     })
     .catch((error) => {
         console.log(error)
     });
 };
 类似资料:
  • 问题内容: 我想在浏览器遵循ui-router动态创建的链接之前验证某些条件。 我正在调查,但无法从那里访问。我还需要在应用程序中的多个地方使用它,这会很麻烦。 请记住,它链接到(一起工作),因此我无法删除,也不能在称为with的函数内使用。 应该在a 和on 内评估条件(在转换之前,可以取消条件) 我需要这样的东西: 我试过了: 和 甚至 但是不起作用。 沙盒 问题答案: 这个答案激发了我创建一

  • 问题内容: 我有一个组件,有时有时需要呈现为和,有时需要呈现为。在我读来确定这一点,是。 如果存在,则需要将组件包装在中。否则,它将仅呈现为。 可能? 这是我现在正在做的,但是感觉可以简化: 更新: 这是最终的锁定。感谢您的提示,@ Sulthan! 问题答案: 只需使用一个变量。 或者,您可以使用辅助函数来呈现内容。JSX和其他代码一样。如果要减少重复,请使用函数和变量。

  • 问题内容: 我需要能够在我们的Jenkins Pipeline构建过程中创建简单的HTTP POST请求。但是,我不能使用简单的curl sh脚本,因为我需要它在Windows和Linux节点上工作,并且如果可以避免的话,我不希望在节点上执行更多的工具安装。 我们正在使用的Pipeline插件中使用的Groovy库对于此任务应该是完美的。Groovy有一个扩展名,可以执行简单的POST,称为htt

  • 我需要能够在我们的Jenkins管道构建期间创建简单的HTTP POST请求。但是我不能使用简单的curl sh脚本,因为我需要它在Windows和Linux节点上工作,如果我可以避免的话,我不希望在节点上强制安装更多的工具。 我们正在使用的管道插件中使用的Groovy库应该非常适合此任务。Groovy有一个扩展来执行简单的POST,称为http builder,但我一生都无法在Jenkins的G

  • 我有问题动态添加jsx表行到表中的反应。 我的案例如下: 如果表行包含子行,请将它们添加到主行之外。 这是我最初的设计: 问题是不允许div作为tbody标记中的子级。你知道我怎样才能不把我的报税单写进div里就解决这个问题吗? 我在考虑将整个tbody移动到我的行组件,并有条件地在那里渲染子行,但是我看不出这有什么帮助,因为我仍然不能在返回周围使用任何包装器...我唯一能使用的包装器是tbody

  • 我对使用REST调用是新手。我有一个文件在我的项目中。 该文件的内容是: Java代码: 例外:java.io.IOException:服务器返回HT 在Soap Ui,添加的endpoint和以上内容 如何读取json内容并将其作为java中的请求正文传递?