2016-01-31 341 views
6

私はこのシンプルな反応アプリを持っています。React input onChangeは発火しません

var BlogForm = React.createClass({ 
getInitialState: function() { 
    return { 
     title: '', 
     content: '' 
    }; 
}, 
changeTitle: function(event) { 

    var text = event.target.value; 

    console.log(text); 

    this.setState({ 
     title: event.target.value 
    }); 
}, 
changeContent: function(event) { 
    this.setState({ 
     content: event.target.value 
    }); 
}, 
addBlog: function(ev) { 
    console.log("hit hit"); 
}, 
render: function() { 
    return (
       <form onSubmit={this.addBlog(this)}> 
        <div> 
         <label htmlFor='picure'>Picture</label> 
         <div><input type='file' id='picture' value={this.state.picture} /></div> 
        </div> 
        <div> 
         <input className="form-control" type='text' id='content' value={this.state.title} onChange={this.changeTitle} placeholder='Title' /> 
        </div> 
        <div> 
         <input className="form-control" type='text' id='content' value={this.state.content} onChange={this.changeContent} placeholder='Content' /> 
        </div> 
        <div> 
         <button className="btn btn-default">Add Blog</button> 
        </div> 
       </form> 

    ); 
    } 
}); 

私はonChange={this.changeTitle (this)}を使用するときにおかしい事は、イベントが発生しているが、changeTitle機能におけるEV変数が正しいものではありません。

+0

[私の作品](http://jsfiddle.net/dx8mq8dj/2/) 。 – Mathletics

+0

私はあなたがそれをどのように設定するか尋ねるかもしれません、私はこれがうまくいかなければならないことを知っていました。 – Cekaleek

+0

あなたのコードをリンクされたフィドルに正確にコピーしました。http://jsfiddle.net/dx8mq8dj/2/ – Mathletics

答えて

6

試してみてください。

onChange={(evt) => this.changeTitle(evt)} 

か:

onChange={this.changeTitle.bind(this)} 

の代わり:

onChange={this.changeTitle} 
+0

このパラダイムを使用して、onChange = {(evt)=> props.onChangeDate(evt)}: –

+3

関数が正しくバインドされている場合は、どうしてですか?これらの3つはうまくいきませんか? –

+0

トップが動作し、ボトムが動作しない理由を説明してください – Mazzy