我真的不想秃头呀 2023-05-08 11:50 采纳率: 88.9%
浏览 40
已结题

react中,antd编辑弹窗没有正确显示?

  • 描述:只有选择了账目后,才会弹出计量输入框,且下面的金额由账目中的金额转换比例和计量自动算出结果。没有选择账目,则需要手动输入金额。

img

  • 正常情况,如图:

    img

  • 问题:点击编辑后,原本数据中有选择账目,但是在弹窗中,没有显示计量。在编辑数据成功后,点击新增按钮,弹窗中计量会直接显示。
  • 编辑问题:

img

  • 新增问题:

img

代码如下:

  • 获取账目列表
const [account, setAccount] = useState(null);
  const state = useStore().getState();
  const accountList = state.financial.accountList;
  • 计量金额处理
 const handleValueChange = (e) => {
    //e.value;
    //事件委托 event.target=>获取到输入框input,.value获取到输入框的值
    if (account) {
      form.setFieldValue('amount', e.target.value * account.ratio);
      console.log(e.value);
    }
  };
  //===账目列表遍历
  const financingCategorysMap = {};
  accountList?.forEach((a) => {
    financingCategorysMap[a.sid] = { text: a.name, ratio: a.ratio };
    console.log('账目a==>', a);
  });
  const ops: any = {};
  if (account) {
    if (account.suffix) {
      ops.suffix = account.unit;
    } else {
      ops.prefix = account.unit;
    }
  }

  • 账目表格
 {
      title: '账目',
      search: false,
      dataIndex: 'accountId',
      render: (text) => {
        const account = accountList.find((a) => a.sid === text);
        return account ? account.name : '无';
      },
    },
    {
      title: '计量',
      search: false,
      dataIndex: 'value',
    },
    {
      title: '金额',
      search: false,
      dataIndex: 'amount',
    },

  • 弹窗代码
<>
              <Form.Item
                label={
                  <span>
                    账目
                    <Tooltip title="若没有账目可以选择,请先在账目页面进行添加">
                      <QuestionCircleOutlined style={{ marginLeft: 8 }} />
                    </Tooltip>
                  </span>
                }
                name="accountId"
              >
                <Select
                  style={{ width: 120 }}
                  allowClear
                  onChange={handleCategoryChange}
                  options={accountList?.map((a) => ({
                    value: a.sid,
                    label: a.name,
                  }))}
                />
              </Form.Item>

              {account && (
                <Form.Item
                  label="计量"
                  name="value"
                  rules={[{ required: true }]}
                >
                  <Input
                    onChange={(e) => handleValueChange(e)}
                    style={{ width: '100%' }}
                    min={1}
                    {...ops}
                  />
                </Form.Item>
              )}
            </>
                  <Form.Item
                        label="金额"
                        name="amount"
                        rules={[{ required: true }]}
                      >
                        <InputNumber
                          style={{ width: '100%' }}
                          min={1}
                          prefix="¥"
                        />
                      </Form.Item>

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2023-05-08 12:50
    关注

    新增,编辑按钮的处理事件,弹出窗口的保存代码发出来看下。

    看描述编辑完后再新增没有清空account变量导致计量直接显示了。

    新增时调用setAccount(null)清空下account的值

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月8日

悬赏问题

  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴
  • ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
  • ¥50 爬虫预算充足,跪巨佬
  • ¥15 滑块验证码拖动问题悬赏