2017-03-22 6 views
1

Ich kann keinen Text in meinen Textbereichen eingeben. Ich kann meinen Standardtext nicht ändern.Kann keinen Text in Textbereich eingeben

Wie kann ich mein Problem lösen?

class SomeClass extends Component{ 
constructor(props){ 
     super(props) 
     this.state = {data:[]} 

     } 
handleChange(e, media_id){ 
     var newState = $.each(this.props.data, function() { 
     if (this.media_id == media_id) { 
      this.text = e.target.value } 
     }); 
     this.setState({data:newState}) 
    }; 
render(){ 
    return(
     <div className="col s9 m9 cards-container"> 
     {this.props.data.map(item => 
      <div className="input-field"> 
       <textarea 
        placeholder="Описание с тегами" ref="tags" 
        className="materialize-textarea" value={ item.text } 
        onChange={this.handleChange.bind(this, item.media_id)} 
       /> 
      </div>)})} 
      } 

Antwort

1

die Reihenfolge der Parameter handleChange Reverse:

handleChange(media_id, e) 

Wegen, wie die handleChange gebunden ist, die Parameter in umgekehrter Reihenfolge sein werden:

this.handleChange.bind(this, item.media_id) 

That gibt eine teilweise angewendete Funktion zurück, wobei item.media_id der erste Parameter ist. Das eventuelle Objekt Event, das übergeben wird, wenn onChange passiert, wird der zweite Parameter sein.

+0

Dies ist das funktioniert! Vielen Dank! –

0

i sehen Sie verwenden es6 standart, in Ihrem handleChange:

<textarea onChange={...} ... 

Sie haben mit

onChange={(e) => this.handleChange(e, item.media.id)} 

zu ersetzen, die alle

Verwandte Themen