账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    antd输入框的函数防抖要怎么做
    46
    0

    请问antd中输入框的函数防抖要怎么弄?
    这是我写的一个测试代码

    import React from "react";
    import ReactDOM from "react-dom";
    import "antd/dist/antd.css";
    import "./index.css";
    import { Form, Input } from "antd";
    import debounce from "lodash.debounce";
    
    const FormItem = Form.Item;
    
    const CustomizedForm = Form.create({
      onFieldsChange(props, changedFields) {
        props.onChange(changedFields);
      }
    })(props => {
      const { getFieldDecorator } = props.form;
      return (
        <Form layout="inline">
          <FormItem label="Username">
            {getFieldDecorator("username", {
              rules: [{ required: true, message: "Username is required!" }]
            })(<Input />)}
          </FormItem>
        </Form>
      );
    });
    
    class Demo extends React.Component {
      state = {
        fields: {
          username: {
            value: "benjycui"
          }
        }
      };
    
      handleFormChange = changedFields => {
        if (changedFields["username"].validating === false) {
          debounce(() => {
            console.log("hahaha");
            this.setState(({ fields }) => ({
              fields: { ...fields, ...changedFields }
            }));
          }, 2000)();
        }
      };
    
      render() {
        const fields = this.state.fields;
        return (
          <div>
            <CustomizedForm {...fields} onChange={this.handleFormChange} />
            <pre className="language-bash">{JSON.stringify(fields, null, 2)}</pre>
            <button onClick={this.xxx}>click</button>
          </div>
        );
      }
    }
    
    ReactDOM.render(<Demo />, document.getElementById("container"));
    

    测试地址
    https://codesandbox.io/s/wo2v...

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 孤心一人行 普通会员 1楼

      在Ant Design中,可以使用debounce函数来实现输入框的防抖功能。debounce函数接收两个参数:一个要重复执行的函数,一个时间间隔,表示防抖的时间间隔。如果在防抖时间内没有执行函数,那么这个防抖函数就不会被执行。

      以下是一个简单的示例:

      ```javascript import { debounce } from 'antd';

      const input = document.getElementById('input');

      input.addEventListener('input', debounce(function() { console.log('Value changed'); }, 200)); ```

      在这个示例中,我们首先获取到输入框的引用,然后在输入框的输入事件处理器中,我们使用debounce函数来限制一次输入事件的执行时间。debounce函数的第二个参数是防抖的时间间隔,我们设置为200毫秒,这意味着在200毫秒内,如果用户没有输入任何内容,那么防抖函数就不会被执行。

      这只是一个基本的示例,实际上你可能需要根据你的具体需求来调整防抖的时间间隔。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部