2016-12-05 9 views
1

Ich muss einen dritten Teil Code für ein Formular einbetten. Ich versuche, es in einer Komponente zurückzugeben, aber es funktioniert offensichtlich nicht. Wie kann ich das einrichten?Verwenden Sie eingebetteten Code von Drittanbietern in einer React-Komponente

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; 

Antwort

0

Leider gibt es kein wirklich saubere Art und Weise, dies zu tun, kurz in das DOM des Erreichens des externen Skript einzufügen, dann direkt den Einbettungscode ausgeführt wird.

Hier ist, wie ich über diese gehen würde:

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

Vielen Dank! Das hat funktioniert! und machte mir alles klar. –

+0

Ich habe ein Problem jetzt - wenn ich es auf der Seite mit importieren und dann

die Konsole zeigt einen Fehler - Uncaught TypeError: Kann Eigenschaft 'ParentNode' von null - keine Idee warum? –

+0

Keine Ahnung; Es ist wahrscheinlich spezifisch für dieses eingebettete Skript. Sie könnten versuchen, die Zeilen "addEventListener" und "appendChild" zu vertauschen. vielleicht versucht es, die DOM-Positionierung des Elements '

Verwandte Themen