2016-01-31 233 views
6

我目前有這個簡單的反應應用程序,我無法得到這些onchange事件爲我的生活開火。反應輸入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)}使用此範例:https://facebook.github.io/flux/docs/flux-utils.html –

+3

如果函數被正確綁定...爲什麼這三個都不行嗎? –

+0

請解釋爲什麼最上面的一個工作,最下面的一個不工作 – Mazzy