問題是onChange事件在輸入標記中未觸發。我之前使用LinkedStateMixin來跟蹤輸入值。最近,我想添加onChange事件來運行一些函數,然後我刪除了LinkedStateMixin,但onChange無法啓動。我試圖將e.stopPropagation()添加到setUsername(),但它不工作。我嘗試了其他事件,如onKeyDown,onClick和ect。他們都不能被解僱。問題是什麼?React onChange事件不會觸發
var React = require('react');
var SessionActions = require('../../actions/session_actions');
var UserStore = require('../../stores/user_store');
var LogInForm = React.createClass({
getInitialState: function() {
return ({
user: undefined,
username: '',
password: '',
});
},
componentDidMount: function() {
this.token = UserStore.addListener(this.updateUserStore);
},
componentWillUnmount: function() {
this.token.remove();
},
updateUserStore: function() {
this.setState({user: UserStore.all()});
this.setState({username: ''});
this.setState({password: ''});
},
setUsername: function(e) {
console.log("Fired");
},
handleSubmit: function(e) {
e.preventDefault();
SessionActions.logIn({
username: this.state.username,
password: this.state.password
});
this.updateUserStore();
},
render: function() {
return (
<div>
<h4>Log In</h4>
<div> </div>
<form onSubmit={this.handleSubmit}>
<input onChange={this.setUsername} placeholder="Username" type="text"/>
<input placeholder="Password" type="password"/>
<input type="submit" value="Log In"/>
</form>
</div>
);
}
});
module.exports = LogInForm;
感謝您的幫助!我嘗試了你的小提琴,它是在小提琴中工作,但我不明白爲什麼它不工作在我的工作,這是我發佈完全相同。我正在使用chrome,表單可以呈現,但onChange不會觸發。我正在使用webpack,你認爲這會導致問題嗎? –
我不認爲這是一個webpack的問題,因爲表單正在呈現。打開chrome開發工具並查看是否在控制檯中顯示任何警告或錯誤。 –
我終於解決了這個問題!我將處理函數的名字從setUsername()更改爲handleUsername(),然後它就可以正常工作了!你知道爲什麼會發生這種情況嗎? –