antd4.x必踩的坑(二)

1 antd的select和popover弹层当页面内容过高时滚动悬浮固定在页面某个位置

 如图。

解决办法:给select添加如下属性:

 getPopupContainer={(triggerNode) => triggerNode.parentNode}

<Space size="large">
          <span>定额应用管理</span>
          <Select
            defaultValue="0"
            onChange={selectType}
            style={{ width: '160px' }}
            getPopupContainer={(triggerNode) => triggerNode.parentNode}
          >
            <Option value="0">按产品类型展示</Option>
            <Option value="1">按门店展示</Option>
          </Select>
</Space>
  <Popover
        overlayClassName="popv-wrap"
        getPopupContainer={(trigger) => trigger}
        trigger="click"
        vshowCancel={false}
        content={FilteredForm}
        placement="topRight"
      >
        <Iconfont type="icon-guolv" className="filter" />
  </Popover>

对于popover做同样的处理。

2 如何处理定时任务,定时器的处理?

如下图。

 这个进度的形成是每隔一段时间请求后端的接口。然后重新赋值

import {useRef } from 'react';
function CopyToCombo(props) {
  let timer = useRef();

 const getProgress = () => {
    timer.current = setInterval(async () => {
      try {
        let res2 = await Service.getProcess();
        let { state, percent, msg } = res2.data;
        if (state == 1 || state == -1) {
          clearInterval(timer.current);
          timer.current = null;
          setProcessData({ state, percent: fix2(percent), msg });
          return;
        }
        setProcessData({ state, percent: fix2(percent), msg });
      } catch (err) {
        console.log('err', err);
        if (err.error == -1) {
          clearInterval(timer.current);
          timer.current = null;
          return;
        }
      }
    }, 200);
  };

  const endProgress = (num) => {
    clearInterval(timer.current);
    timer.current = null;
    let data = {};
    if (num == 1) {
      data = { state: 1, percent: 100, msg: '复制成功' };
    } else {
      data = { state: -1, percent: 0, msg: '复制失败' };
    }
    setProcessData(data);
    return;
  };

  Service.copyQuota(data).then(async (res) => {
        setIsShowProgress(true);
        if (res.code == 0) {
          let res2 = await Service.getProcess();
          let { state, percent, msg } = res2.data;
          if (state === 1) {
            endProgress(1);
          } else if (state == -1) {
            endProgress(-1);
          } else {
            getProgress();
          }
        }
      });
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在React.js和Ant Design 4.x中,表单的提交可以通过使用Form组件的onFinish属性来实现。当表单中的所有表单项都通过验证时,onFinish事件会被触发,并且会将表单的值作为参数传递给事件处理函数。下面是一个简单的例子,展示了如何在React.js和Ant Design 4.x中提交表单。 首先,在你的代码中导入所需的模块: ```js import React, { useState } from 'react'; import { Form, Input, Button } from 'antd'; ``` 接下来,创建一个表单组件: ```js const MyForm = () => { // 定义表单项的值 const [form] = Form.useForm(); // 表单提交事件 const handleSubmit = (values) => { console.log('Received values of form: ', values); // 在这里可以提交表单数据到服务器 }; return ( <Form form={form} onFinish={handleSubmit}> <Form.Item label="Username" name="username" rules={[{ required: true, message: 'Please input your username!' }]}> <Input /> </Form.Item> <Form.Item label="Password" name="password" rules={[{ required: true, message: 'Please input your password!' }]}> <Input.Password /> </Form.Item> <Form.Item> <Button type="primary" htmlType="submit"> Submit </Button> </Form.Item> </Form> ); }; ``` 在这个例子中,我们使用了Ant Design的Form、Input和Button组件来创建表单。在表单中,我们定义了一个onFinish事件处理函数handleSubmit,当表单中的所有表单项都通过验证时,该事件会被触发。在事件处理函数中,我们可以获取到表单的值,并将其提交到服务器。 最后,我们将表单组件渲染到页面中: ```js ReactDOM.render(<MyForm />, document.getElementById('root')); ``` 这是一个简单的例子,你可以根据自己的需求来添加更多的表单项和验证规则。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值