2017-03-17 5 views
-1

Ich habe eine kleine App, die Benutzereingaben nimmt, und ich möchte ihnen eine kleine Vorschau zeigen, während sie tippen (genau wie Stackoverflow es tut).set innerText auf Reagieren

Ich versuche, so etwas wie dieses:

ReactDOM.render(
    <div>{user_input}</div>, 
    document.getElementById('preview') 
); 

Es funktioniert großartig, bis ich versuchen, eine neue Zeile einzufügen, reagieren sie ignoriert und macht nur einen weißen Raum. Aber wenn ich es auf Vanille Javascript tun:

var content = document.createElement('div'); 
content.innerText = user_input; 
document.getElementById('preview').appendChild(content); 

es so tun funktioniert den Trick und jeder Zeilenumbruch wird in einen <br> Tag automatisch eingeschaltet.

Gibt es eine Möglichkeit, innerText auf reagieren zu setzen oder sollte ich einfach mit der Vanille-Lösung gehen?

Gibt es einen Rückschlag bei der Verwendung von InnerText?

+0

Es klingt wie alles von Ihrem Code ist nicht "innen" reagieren Komponenten. Im Allgemeinen sollten Sie nur einen 'ReactDOM.render()' haben. Hier ist ein Link zu Reacts Formularseite https://facebook.github.io/react/docs/forms.html sowie ein Codepen-Beispiel zum Anzeigen einer Vorschau einer kontrollierten Komponente Wert https://codepen.io/anon/pen/MpOvVw –

Antwort

0

Der folgende Code ist möglicherweise, was Sie brauchen.

var user_inputs = ['line1', 'line2']; 
var inputs = user_inputs.map(function(user_input, idx){ 
    return <div key={idx}>{user_input}</div> 
}); 

ReactDOM.render(
    <div className="root">{inputs}</div>, 
    document.getElementById('preview') 
);