我想知道这是否是一个好习惯,还是我应该改用其他方式设计此应用。我特别关注这两个“handleChange”函数,并且想知道是否可以通过某种方式简化它。当然也欢迎其他建议。
user-add.js:
import React, {Component} from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {createUser} from '../actions/index'
class UserCreate extends Component {
constructor(props, context) {
super(props, context);
this.state = {
inputText: 'Helluuuu'
}
}
handleChangeFirstName(event) {
console.log(event.target.value);
this.setState({
inputTextFirstName: event.target.value
})
}
handleChangeLastName(event) {
console.log(event.target.value);
this.setState({
inputTextLastName: event.target.value
})
}
render() {
return (
<div>
<h2> Add User </h2>
<table className="userTable">
<tbody>
<tr>
<td>First Name:</td>
<td>Last Name:</td>
</tr>
<tr>
<td>
<input type="text"
placeholder="Hello!"
value={this.state.inputTextFirstName}
onChange={this.handleChangeFirstName.bind(this)}/>
</td>
<td>
<input type="text"
placeholder="Hello!"
value={this.state.inputTextLastName}
onChange={this.handleChangeLastName.bind(this)} />
</td>
</tr>
</tbody>
</table>
<button onClick={() =>this.props.createUser()}>Submit</button>
</div>
);
}
}
function mapStateToProps(state) {
return {
user: state.activeUser
};
}
function matchDispatchToProps(dispatch){
return bindActionCreators({createUser: createUser}, dispatch);
}
export default connect(mapStateToProps, matchDispatchToProps)(UserCreate);
最佳答案
当然,您可以将其减少为仅一种handleChange
方法,并且可以使用该单个方法使用任意数量的输入字段。
另外,我认为您不需要任何第三方软件包。
在您的渲染方法中:
<input
type="text"
name="firstName"
placeholder="First Name!"
value={this.state.firstName}
onChange={this.handleChange.bind(this)}
/>
<input
type="text"
name="lastName"
placeholder="Last Name!"
value={this.state.lastName}
onChange={this.handleChange.bind(this)}
/>
处理更改方法
handleChange(e) {
this.setState({ [e.target.name] : e.target.value });
}
干净得多。