2016-12-05 98 views
1

我需要为表单使用第三方嵌入代码。我试图在组件中返回它,但它显然不起作用。我怎样才能设置这个呢?在React组件中使用第三方嵌入代码

class Form extends Component { 

    render() { 

    return (
     <div> 
     <div id="apply_form"> 
      <a name="form" id="formAnchor"></a> 
      <script type="text/javascript" src="https://fs22.formsite.com/include/form/embedManager.js?1605047845"></script> 
      <script type="text/javascript"> 
      EmbedManager.embed({ 
      key: "key", 
      width: "100%", 
      mobileResponsive: true 
      }); 
      </script> 
     </div> 
     </div> 
    ); 
    } 
} 

export default Form; 

回答

0

不幸的是,有没有这样做的真正清洁的方式,达到短到DOM插入外部脚本,然后直接运行嵌入代码的。

这是我怎么会去一下:

class Form extends Component { 

    componentDidMount() { 
    const script = document.createElement('script'); 
    script.setAttribute(
     'src', 
     'https://fs22.formsite.com/include/form/embedManager.js?1605047845'); 
    script.addEventListener('load',() => { 
     EmbedManager.embed({ 
     key: "key", 
     width: "100%", 
     mobileResponsive: true 
     }); 
    }); 
    document.body.appendChild(script); 
    } 

    render() { 
    return (
     <div> 
     <div id="apply_form"> 
      <a name="form" id="formAnchor"></a> 
     </div> 
     </div> 
    ); 
    } 
} 

export default Form; 
+0

太谢谢你了!这工作!并为我清理了一些东西。 –

+0

我现在有一个问题 - 当我通过导入将其添加到页面时,然后

控制台显示一个错误 - 未捕获的TypeError:无法读取null的属性'parentNode' - 任何想法为什么? –

+0

不知道;这可能是特定于此嵌入脚本。你可以尝试交换'addEventListener'和'appendChild'行;也许它试图读取'