You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SharpSpring表单嵌入React(page.jsx)组件并解决加载报错

错误原因

你遇到的报错是因为你直接将ss_form这个JS对象作为React子元素放在了JSX中,React本身不支持直接渲染普通对象,因此触发了类型错误。另外你直接在JSX中写的script标签也不会按照预期执行SharpSpring需要的初始化逻辑。

解决步骤

  • 第一步:给表单要挂载的容器指定唯一的id,将ss_form配置挂载到window对象上(SharpSpring的脚本会从全局作用域读取这个配置)
  • 第二步:在组件挂载完成后(用useEffect钩子)动态创建script标签加载SharpSpring的表单脚本,确保脚本执行时配置已经存在
  • 第三步:组件卸载时清理全局的ss_form变量和注入的script标签,避免内存泄漏

完整实现代码

import React, { useEffect } from "react";

function MyComponent()  {
  useEffect(() => {
    // 全局挂载SharpSpring需要的配置
    window.ss_form = {
      account: 'MzawMDE3tzQzBQ', // 请替换为你自己的正确account值
      formID: 'szBIMrFMSzbXTUm0TNM1MTc107VMNbfQTTRJTExOTUoySk4zAA', // 请替换为正确的formID
      width: '100%',
      domain: 'app-3QNK98WC9.marketingautomation.services', // 请替换为你自己的domain
      target_id: 'sharpspring-form-container', // 和下方容器的id对应
      // 有需要可打开以下两个配置
      // hidden: {'field_id': 'value'},
      // polling: true
    };

    // 动态创建script标签加载表单脚本
    const script = document.createElement('script');
    script.src = 'https://koi-3QNK98WC9.marketingautomation.services/client/form.js?ver=2.0.1'; // 请替换为你自己的脚本地址
    script.type = 'text/javascript';
    script.async = true;

    const formContainer = document.getElementById('sharpspring-form-container');
    formContainer.appendChild(script);

    // 组件卸载时清理资源
    return () => {
      delete window.ss_form;
      if (formContainer && script.parentNode === formContainer) {
        formContainer.removeChild(script);
      }
    };
  }, []);

  return (
    <main>
      {/* 表单挂载的目标容器 */}
      <div id="sharpspring-form-container" className="form">
      </div>
    </main>
  );
}

export default MyComponent;

注意事项

代码中的account、formID、domain以及脚本地址请替换为你自己SharpSpring后台提供的正确值,你之前的代码里这几个值和原始HTML里的不一致,需要确认正确性。该实现已经满足脚本放在head外部、表单容器内部的加载要求。

内容的提问来源于stack exchange,提问作者mdeotti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:06:11