onChangeイベントは入力タグで発生しません。以前は入力値を追跡するためにLinkedStateMixinを使用していました。最近、onChangeイベントを追加していくつかの関数を実行し、LinkedStateMixinを削除したいが、onChangeは起動できない。 setUsername()にe.stopPropagation()を追加しようとしましたが、動作しません。私はonKeyDown、onClick、そしてectのような他のイベントを試みました。いずれも解雇することはできません。何が問題ですか?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;
ありがとうございます!私はあなたのフィドルを試しました、それはフィドルで働いていますが、なぜそれが私が投稿したものとまったく同じ私の上で動作していないのか分かりません。私はクロムを使用していますが、フォームはレンダリングできますが、onChangeは起動しません。私はwebpackを使用しています、あなたはそれが問題を引き起こすと思いますか? –
フォームがレンダリングされているため、Webpackの問題ではないと思います。 Chrome Devツールを開き、コンソールに警告やエラーが表示されていないか確認してください。 –
私はついにこの問題を解決しました!ハンドラ関数の名前をsetUsername()からhandleUsername()に変更しても問題ありません。なぜこれが起こったのか知っていますか? –