我正在为这个模式使用AntDesign. 我有一个模式表单,当用户点击删除按钮时显示,这个模式有两个单选按钮组,确认应该调用不同的函数根据 Select 的值.我使用UseState来更新seltedValue,但它似乎没有更新.此外,我不能将预先 Select 的值更改为其他选项.然而,处理程序正在被调用.

const Signatures = () => {
     const [selectedOption, setSelectedOption] = useState('deleteSignature');
     const handleDeleteOptionsChange = (event) => {
      setSelectedOption(event.target.value);
     }
    const onDeleteClick = (id) => {
    Modal.confirm({
      okText: 'Confirm',
      centered: true,
      title: 'To Delete this documents, press \'Confirm\'',
      content: (
        <Radio.Group onChange={handleDeleteOptionsChange} value={selectedOption}>
          <Radio checked={selectedOption ==='deleteSignature'}  value="deleteSignature">Delete signature request</Radio>
          <Radio checked={selectedOption ==='deleteSignatureAndDocument'}  value="deleteSignatureAndDocument">Delete signature request and document</Radio>
        </Radio.Group>
      ),
      onOk: async () => {
          if (selectedOption==='deleteSignature')
          {//return onDeleteSignature(id);} 
          else {//return onDelete(id);}
        
      },
    });
  };

...
return ();
    };
export default Signatures;

正在触发handleDeleteOptionsChange,但UI端没有状态更新和单选按钮更改

任何帮助都将不胜感激.

推荐答案

我认为selectedValue和单选按钮组没有更新,因为您使用的是Modal.confirm方法.这是一个静态方法,它在Reaction组件生命周期之外创建一个模式对话框.这意味着模式对话框不能访问组件的状态或props ,并且当它们更改时不会重新呈现.因此,要解决此问题,您需要使用Modal组件而不是Modal.confirm方法.

例如:

const Signatures = () => {
  const [selectedOption, setSelectedOption] = useState("deleteSignature");
  const [visible, setVisible] = useState(false);
  const handleDeleteOptionsChange = (event) => {
    setSelectedOption(event.target.value);
  };

  const handleOk = async () => {
    if (selectedOption === "deleteSignature") {
      //return onDeleteSignature(id);
    } else {
      //return onDelete(id);
    }
    setVisible(false);
  };

  const handleCancel = () => {
    setVisible(false);
  };

  return (
    <>
      <Modal
        visible={visible}
        okText="Confirm"
        centered
        title="To Delete this documents, press 'Confirm'"
        content={
          <Radio.Group
            onChange={handleDeleteOptionsChange}
            value={selectedOption}
          >
            <Radio
              checked={selectedOption === "deleteSignature"}
              value="deleteSignature"
            >
              Delete signature request
            </Radio>
            <Radio
              checked={selectedOption === "deleteSignatureAndDocument"}
              value="deleteSignatureAndDocument"
            >
              Delete signature request and document
            </Radio>
          </Radio.Group>
        }
        onOk={handleOk}
        onCancel={handleCancel}
      />
    </>
  );
};

要了解更多信息,请参阅Ant Design Documentation - Modal

Reactjs相关问答推荐

为什么我的标签在Redux API中不能正常工作?

CreateBrowserRouter将props 传递给父组件以验证权限

关于同一位置的不同组件实例的react S规则被视为相同组件

有没有办法将MUI网格元素与Flex-Start对齐?

对搜索引擎优化来说,react 头盔的异步足够了吗?

无法使用Reaction日期选取器和Next.js设置初始日期

在Reaction中导入';图片&文件夹时出错

蚂蚁 Select .列表弹出窗口不会';有时不会出现

从 MongoDB createAt 字段中分割精确时间

通过createRoot创建的React元素无法调用Provider值

解决在React测试库中的act()警告

如何更新redux状态存在的输入框

位于组件material-ui中的TextField中的 map 功能不起作用

我可以更改 styled() 中的响应吗? (MUI v5)

如何使用 React 在客户端获取 nestjs websocket 异常错误?

自动重新获取不起作用 - RTK 查询

从 API 中提取映射数组后出现重复元素

在视图列表上react 本机无限循环的反弹动画?

在渲染不显示子元素之后,再次渲染时,子元素状态数据完全消失了.为什么会这样以及如何防止它发生?

错误(未捕获的类型错误):无法读取未定义的属性(读取参数)