You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向react-confirm-alert传递props(记录ID)?

解决react-confirm-alert传递记录ID的问题

要实现将点击按钮对应的记录ID传递给确认弹窗,只需对现有代码做两处关键修改:

1. 让deleteConfirm接收记录ID参数

修改deleteConfirm函数,使其可以接收recordId参数,这样就能在弹窗中动态显示对应ID的提示信息,以及在确认删除时使用该ID:

const deleteConfirm = ({ onClose, recordId }) => {
    // 动态生成提示消息
    const msg = `Are you sure you want to delete the record with id = ${recordId}?`

    const handleClickedCancel = () => {
        onClose();
    };
    const handleClickedOK = () => {
        // 这里使用传入的recordId执行删除逻辑
        console.log(`Deleting record with id: ${recordId}`);
        // 替换为你的实际删除API调用或状态更新逻辑
        onClose();
    };
    return (
        <div className='react-confirm-alert'>
            <h3>DELETE A RECORD</h3>
            <div>{msg}</div>
            <div>
                <button onClick={handleClickedOK}>OK</button>
                <button onClick={handleClickedCancel}>CANCEL</button>
            </div>
        </div>
    );
}

2. 在触发弹窗时传递recordId

在onDeleteClicked函数中,调用confirmAlert时,通过customUI的回调函数把获取到的recordId传递给deleteConfirm:

const onDeleteClicked = (e) => {
    const recordId = e.target.id;
    confirmAlert({ 
        customUI: ({ onClose }) => deleteConfirm({ onClose, recordId }) 
    });
};

修改后的完整代码

import React from 'react';
import { confirmAlert } from 'react-confirm-alert'
import 'react-confirm-alert/src/react-confirm-alert.css'


export default function DeleteWithConfirmComponent() {

    const deleteConfirm = ({ onClose, recordId }) => {
        const msg = `Are you sure you want to delete the record with id = ${recordId}?`

        const handleClickedCancel = () => {
            onClose();
        };
        const handleClickedOK = () => {
            // 执行删除逻辑,使用传入的recordId
            console.log(`Deleting record ${recordId}`);
            onClose();
        };
        return (
            <div className='react-confirm-alert'>
                <h3>DELETE A RECORD</h3>
                <div>{msg}</div>
                <div>
                    <button onClick={handleClickedOK}>OK</button>
                    <button onClick={handleClickedCancel}>CANCEL</button>
                </div>
            </div>
        );
    }      

    const onDeleteClicked = (e) => {
        const recordId = e.target.id;
        confirmAlert({ 
            customUI: ({ onClose }) => deleteConfirm({ onClose, recordId }) 
        });
    };

    return <button id="123" onClick={onDeleteClicked}>Delete Record</button>;
}

核心逻辑是:通过在customUI中创建一个闭包函数,把当前点击的recordId传递给deleteConfirm,这样弹窗就能拿到对应的ID来动态生成内容和执行删除操作。

内容的提问来源于stack exchange,提问作者AlanSwansea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:17:52