Das Ereignis onChange wird nicht im Eingabe-Tag ausgelöst. Ich habe LinkedStateMixin verwendet, um den Eingabewert vorher zu verfolgen. In letzter Zeit möchte ich ein OnChange-Ereignis hinzufügen, um eine Funktion auszuführen, und dann habe ich LinkedStateMixin entfernt, aber OnChange kann nicht ausgelöst werden. Ich habe versucht, e.stopPropagation() zu setUsername() hinzuzufügen, aber es funktioniert auch nicht. Ich habe andere Ereignisse wie onKeyDown, onClick und ect ausprobiert. keiner von ihnen kann gefeuert werden. Was ist das Problem?React onChange-Ereignis wird nicht ausgelöst
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;
Danke für Ihre Hilfe! Ich habe versucht, deine Geige, es funktioniert in der Geige, aber ich verstehe nicht, warum es nicht funktioniert auf meiner, die genau das gleiche ist, was ich poste. Ich verwende Chrom, und das Formular kann rendern, aber onChange wird nicht ausgelöst. Ich benutze Webpack, denkst du, dass es das Problem verursacht? –
Ich glaube nicht, dass es ein Webpack-Problem ist, weil das Formular gerendert wird. Öffnen Sie die Chrome-Entwicklungstools, und prüfen Sie, ob eine Warnung oder ein Fehler in der Konsole ausgegeben wird. –
Ich löse endlich dieses Problem! Ich ändere den Namen der Handler-Funktion von setUsername() zu handleUsername(), dann funktioniert es gut! Weißt du, warum das passiert ist? –