2015-10-20 8 views
7

Sto lavorando a un progetto che è fondamentalmente un blocco note. Sto riscontrando problemi anche se aggiorno il valore quando viene effettuata una chiamata ajax. Ho provato a impostare la proprietà del valore textarea, ma non è possibile apportare modifiche al suo valore. Come posso renderlo tale su una modifica di stato il valore della textarea cambia e può essere modificato.Reagire modificando i valori della textarea

Il codice che ho è come segue.

nella classe padre

<Editor name={this.state.fileData} /> 

Nella classe Editor

var Editor = React.createClass({ 
render: function() { 
return (
    <form id="noter-save-form" method="POST"> 
    <textarea id="noter-text-area" name="textarea" value={this.props.name}></textarea> 
    <input type="submit" value="Save" /> 
    </form> 
); 
} 

});

Non riesco a utilizzare defaultValue perché il valore dell'area di testo non è noto al caricamento della pagina e quando provo a inserire i dati tra le aree di testo non accade nulla. Mi piacerebbe che assumesse il valore di stato ogni volta che lo stato cambia, ma è possibile modificarlo in mezzo.

Grazie

Modifica

sono riuscito a farlo funzionare utilizzando jQuery, ma vorrebbe farlo in Reagire, invece, ho chiamato prima di rendering:

$('#noter-text-area').val(this.props.name); 
+0

Cercate onChange, dalla documentazione reagito? https://facebook.github.io/react/docs/forms.html#controlled-components – Hypaethral

+0

Il cambiamento è per quando il valore dell'area di testo cambia. Non ho davvero bisogno di questo, voglio solo che la textarea sia aggiornata al cambio di stato della sua classe genitore. – phlie

+0

Sei sicuro che lo stato del genitore stia effettivamente cambiando? – Hypaethral

risposta

15

I pensi di voler qualcosa sulla linea di:

Parent:

<Editor name={this.state.fileData} /> 

Editor:

var Editor = React.createClass({ 
    displayName: 'Editor', 
    propTypes: { 
    name: React.PropTypes.string.isRequired 
    }, 
    getInitialState: function() { 
    return { 
     value: this.props.name 
    }; 
    }, 
    handleChange: function(event) { 
    this.setState({value: event.target.value}); 
    }, 
    render: function() { 
    return (
     <form id="noter-save-form" method="POST"> 
     <textarea id="noter-text-area" name="textarea" value={this.state.value} onChange={this.handleChange}></textarea> 
     <input type="submit" value="Save" /> 
     </form> 
    ); 
    } 
}); 

Questo è fondamentalmente una copia diretta del l'esempio fornito in https://facebook.github.io/react/docs/forms.html

+0

Grazie e grazie per il collegamento. – phlie

+0

ma il testo non è modificabile nella textarea. Come risolvere questo? @phlie –

+0

@Bhanuprathap dovrebbe essere - quale problema stai avendo? –

Problemi correlati