2014-12-17 15 views
10

Ci sono un sacco di risposte su questo, ma sto cercando qualcosa di specifico per reactjsinserire dinamicamente tag script che verrà eseguito tramite Reactjs

Il mio codice componente:

render: function() { 

    return (
     <Modal {...this.props} title="Embed on your own site!"> 
     <div className="modal-body"> 
      <div className="tm-embed-container" dangerouslySetInnerHTML={{__html: embedCode}}> 
      </div> 
      <textarea className="tm-embed-code" rows="4" wrap="on" defaultValue={embedCode}></textarea> 
     </div> 
     </Modal> 
    ); 
    } 
}); 

Il tag script è lì sulla pagina, ma nessuna esecuzione. Dovrei andare fuori di reagire e usare solo il buon vecchio DOM scripting come indicano le altre risposte?

risposta

10

Per quello che ho capito, il modo in cui reagire sarebbe utilizzare la funzione "componentDidMount" per inserire ciò che si desidera nel div, incluso un certo script esterno.

Se il componente è dinamico e riceve nuovi puntelli regolari, è necessario considerare anche altri metodi (come componenteDidUpdate).

più su inserimento script con jQuery sul this question

componentDidMount: function(){ 
 
    var embedCode = this.props.embedCode; // <script>//my js script code</script> 
 
    
 
    $('#scriptContainer').append(embedCode); 
 
    }, 
 

 
    render: function() { 
 
    return (
 
     <Modal {...this.props} title="Embed on your own site!"> 
 
     <div className="modal-body"> 
 
      <div className="tm-embed-container" id="scriptContainer"> 
 
      </div> 
 
      <textarea className="tm-embed-code" rows="4" wrap="on" defaultValue={this.props.embedCode}></textarea> 
 
     </div> 
 
     </Modal> 
 
    ); 
 
    } 
 
});

+2

voleva evitare jQuery, scusate ho dovuto dire che. Ho finito con l'utilizzo di html(); –

+2

Questo è un po 'magico, apparentemente jquery non si limita a 'const div = document.createElement (' div ');' 'div.innerHTML ='

Problemi correlati