如何根据请求的响应状态返回验证规则(reactjs/antdesign)

发布于 2025-01-25 04:04:23 字数 2838 浏览 2 评论 0原文

我想知道如何根据请求的响应返回验证规则。

我有一个输入,当用户完成写作时,如果尝试输入的用户已经存在,则可以执行获取的位置,就像是执行输入的自动搜索一样。但是现在我要做的是,根据请求的状态返回验证规则,

您知道我如何做这样的事情吗?

目前,我在警报消息中将其返回,但我想将其返回,因为我提到它们

<FormItem {...formItemLayout} style={{ marginBottom: "-44px" }}>
                    {getFieldDecorator(`userName`, {
                      initialValue: selectedData_.userName
                        ? selectedData_.userName
                        : "",
                      rules: [
                        {
                          pattern: new RegExp("^[a-z0-9_.-]+$"),
                          message: <div className="alertsUserName"><IntlMessages id="message.link.pattern" /></div>
                        },
                        {
                          required: true,
                          message: <div className="alertsUserName"><IntlMessages id="error.required" /></div>
                        },
                        {
                          // Rule that returns the RES of the API
                          message: <div className="alertsUserName"><IntlMessages id="message.link400" /></div>
                        }
                      ]
                    })(<Input name="userName" className="inputLink" onFocus={this.onFocus} onBlur={this.onBlur} onKeyDown={(e) => { e.persist(); this.update(e); }}
                      placeholder={intl.formatMessage({
                        id: `maintenace.link.suffixIntructions`
                      })} />)}
                  </FormItem>


//Method

debounce = (func, delay) => {
    let debounceTimer;
    return function () {
      const context = this;
      const args = arguments;
      clearTimeout(debounceTimer);
      debounceTimer = setTimeout(() => func.apply(context, args), delay);
    };
  };

  update = this.debounce(async function (e) {
    console.log(e.target.value);
    console.log(this.state.value);
    try {
      const response = await axios.get(`/dynamicLink/${e.target.value}/findAffiliate`);
      console.log(response);
      const selectData_ = this.state.form
      // this.setState({ userName: e.target.value });
      this.setState({ ...selectData_, userName: e.target.value })
      console.log(this.state.value);

    } catch (error) {
      if (error.response.status === 400) {
        messages.error(this.props.intl.formatMessage({ id: "message.link400" }));
      }
      if (error.response.status === 404) {
        messages.error(this.props.intl.formatMessage({ id: "message.userNull" }));
      }
    }
  }, 3000);

“在此处输入图像说明”

I would like to know how I can return a validation rule depending on the response of a request.

I have an input which, when the user finishes writing, performs a GET where it obtains if the user who is trying to enter already exists, it is like an automatic search that is performing the input. But now what I want to do is that depending on the status of the request return the validation rule

Do you know how I could do something like that?

Currently I return it in an alert message but I would like to return it as I am mentioning them

<FormItem {...formItemLayout} style={{ marginBottom: "-44px" }}>
                    {getFieldDecorator(`userName`, {
                      initialValue: selectedData_.userName
                        ? selectedData_.userName
                        : "",
                      rules: [
                        {
                          pattern: new RegExp("^[a-z0-9_.-]+
quot;),
                          message: <div className="alertsUserName"><IntlMessages id="message.link.pattern" /></div>
                        },
                        {
                          required: true,
                          message: <div className="alertsUserName"><IntlMessages id="error.required" /></div>
                        },
                        {
                          // Rule that returns the RES of the API
                          message: <div className="alertsUserName"><IntlMessages id="message.link400" /></div>
                        }
                      ]
                    })(<Input name="userName" className="inputLink" onFocus={this.onFocus} onBlur={this.onBlur} onKeyDown={(e) => { e.persist(); this.update(e); }}
                      placeholder={intl.formatMessage({
                        id: `maintenace.link.suffixIntructions`
                      })} />)}
                  </FormItem>


//Method

debounce = (func, delay) => {
    let debounceTimer;
    return function () {
      const context = this;
      const args = arguments;
      clearTimeout(debounceTimer);
      debounceTimer = setTimeout(() => func.apply(context, args), delay);
    };
  };

  update = this.debounce(async function (e) {
    console.log(e.target.value);
    console.log(this.state.value);
    try {
      const response = await axios.get(`/dynamicLink/${e.target.value}/findAffiliate`);
      console.log(response);
      const selectData_ = this.state.form
      // this.setState({ userName: e.target.value });
      this.setState({ ...selectData_, userName: e.target.value })
      console.log(this.state.value);

    } catch (error) {
      if (error.response.status === 400) {
        messages.error(this.props.intl.formatMessage({ id: "message.link400" }));
      }
      if (error.response.status === 404) {
        messages.error(this.props.intl.formatMessage({ id: "message.userNull" }));
      }
    }
  }, 3000);

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文