Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将mailerlite.com注册表单与React集成?_Javascript_Html_Reactjs - Fatal编程技术网

Javascript 如何将mailerlite.com注册表单与React集成?

Javascript 如何将mailerlite.com注册表单与React集成?,javascript,html,reactjs,Javascript,Html,Reactjs,Mailerlite.com允许您在站点中嵌入电子邮件注册表单-您如何将其与React集成 具体来说,如何集成JavaScript代码?下面是一个将HTML表单转换为React代码的示例-将所有出现的代码替换为示例表单中的相关代码(有几种不同的代码)。我无法显示加载图标,所以只添加了一些文本 <section id="signup" className="gradient-gray"> <div id="mlb2-CODE" className="ml-subscribe-

Mailerlite.com允许您在站点中嵌入电子邮件注册表单-您如何将其与React集成


具体来说,如何集成JavaScript代码?

下面是一个将HTML表单转换为React代码的示例-将所有出现的代码替换为示例表单中的相关代码(有几种不同的代码)。我无法显示加载图标,所以只添加了一些文本

<section id="signup" className="gradient-gray">
  <div id="mlb2-CODE" className="ml-subscribe-form ml-subscribe-form-CODE">
    <div className="ml-vertical-align-center">
      <div className="subscribe-form ml-block-success" style={{ display: 'none' }}>
        <div className="form-section">
          <p>Thank you, you have successfully subscribed to our announcement list!</p>
        </div>
      </div>
      <form
        className="ml-block-form"
        action="https://landing.mailerlite.com/webforms/submit/CODE"
        data-id="CODE"
        data-code="CODE"
        method="POST"
        target="_blank"
      >
        <p className="signup-title">
          Sign up for our announcement list and we'll let you know when we launch!
        </p>
        <div className="subscribe-form">
          <div className="form-section">
            <div
              className="form-group ml-field-email ml-validate-required ml-validate-email"
            >
              <input
                type="email"
                name="fields[email]"
                className="form-control signup-text"
                placeholder="Email address"
                autoComplete="email"
                spellCheck="false"
                autoCapitalize="off"
                autoCorrect="off"
              />
              <input type="hidden" name="ml-submit" value="1" />
              <button type="submit" className="primary signup-button">
                Subscribe
              </button>
              <button
                disabled
                style={{ display: 'none' }}
                type="button"
                className="loading"
              >
                Submitting...
                {/* <img
                  src="https://static.mailerlite.com/images/rolling@2x.gif"
                  alt="loading..."
                  width="20"
                  height="20"
                  style={{ width: '20px', height: '20px' }}
                /> */}
              </button>
            </div>
          </div>
        </div>
      </form>
    </div>
  </div>
</section>

您可以调整它,使其不使用内联生成的函数来隐藏/显示表单部分

可以使用组件的状态管理显示

class Landing extends React.Component {
  constructor(props) {
      super(props);
      this.state = {
          display_form: true,
          display_success: false,
      };

  // add mailerlite code
  componentDidMount() {
    // success function
    const f = () => {
      this.setState({
        display_form: false,
        display_success: true,
      });
    };
    // register it on the window object
    window[`ml_webform_success_${CODE}`] = f;

    const script2 = document.createElement("script");
    script2.src = "https://static.mailerlite.com/js/w/webforms.min.js?CODE";
    document.body.appendChild(script2);
  }

  render() {
    return (...);
  }
}
并使用状态来显示或不显示零件,这更具反应性

问候,

class Landing extends React.Component {
  constructor(props) {
      super(props);
      this.state = {
          display_form: true,
          display_success: false,
      };

  // add mailerlite code
  componentDidMount() {
    // success function
    const f = () => {
      this.setState({
        display_form: false,
        display_success: true,
      });
    };
    // register it on the window object
    window[`ml_webform_success_${CODE}`] = f;

    const script2 = document.createElement("script");
    script2.src = "https://static.mailerlite.com/js/w/webforms.min.js?CODE";
    document.body.appendChild(script2);
  }

  render() {
    return (...);
  }
}