2015-10-20 26 views
7

Pracuję nad projektem, który jest w zasadzie notatnikiem. Mam problem z aktualizacją wartości, gdy wywoływane jest wywołanie ajax. Próbowałem ustawić właściwość wartość textarea, ale nie można wprowadzić żadnych zmian jej wartości. Jak mogę to zrobić w przypadku zmiany stanu zmiany wartości textarea i można ją edytować.Reaguj Modyfikowanie wartości Textarea

Kod, który mam, jest następujący.

w klasie macierzystego

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

w klasie 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> 
); 
} 

});

Nie mogę użyć wartości defaultValue, ponieważ wartość textarea nie jest znana podczas ładowania strony i kiedy próbuję umieścić dane między tekstami nic się nie dzieje. Chciałbym, aby przy każdym stanie stanu zmieniał się stan, ale można go edytować w międzyczasie.

Dzięki

Edytuj

udało mi się uzyskać jego pracy przy użyciu jQuery, ale chciałby, aby to zrobić w React zamiast, zadzwoniłem to przed render:

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

Szukasz onChange z docs reagować? https://facebook.github.io/react/docs/forms.html#controlled-components – Hypaethral

+0

Zmiana dotyczy sytuacji, gdy wartość textarea ulegnie zmianie. Naprawdę nie potrzebuję tego, żeby po aktualizacji stanu swojej klasy nadrzędnej zaktualizować tekst. – phlie

+0

Czy jesteś pewien, że stan rodzica faktycznie się zmienia? – Hypaethral

Odpowiedz

15

I myślę, że chcesz coś na linii:

Rodzic:

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

Redaktor:

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> 
    ); 
    } 
}); 

To jest w zasadzie kopią przykładzie umieszczono na https://facebook.github.io/react/docs/forms.html

+0

Dzięki, i dzięki za link. – phlie

+0

ale tekst nie można edytować w obszarze tekstowym. Jak rozwiązać ten problem? @phlie –

+0

@Bhanuprathap powinno być - jaki masz problem? –