2017-03-22 8 views
1

テキストエリアにテキストを入力することはできません。 デフォルトのテキストは変更できません。テキストエリアにテキストを入力できません

どのように問題を解決できますか?

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

答えて

1
handleChangeにパラメータの順序を逆に

handleChange(media_id, e) 

ためhandleChangeがバインドされた方法で、パラメータは逆の順序であることを行っている。

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

こと部分的に適用された関数を返します。item.media_idが最初のパラメータです。 onChangeが発生すると、最終的にEventオブジェクトが渡され、2番目のパラメータになります。

+0

これは作品であるのです

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

と交換する必要があります!ありがとう! –

0

私はあなたがあなたのhandleChangeで、ES6スタンダールを使用している参照してください。

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

あなたはすべての

関連する問題