【发布时间】:2016-07-11 18:39:05
【问题描述】:
我正在关注一些关于 React/Redux 的教程。 我不清楚的部分是输入表单。 我的意思是如何处理更改以及在哪里管理状态 这是一个非常简单的表单,只有一个字段。
export default class UserAdd extends React.Component {
static propTypes = {
onUserSubmit: React.PropTypes.func.isRequired
}
constructor (props, context) {
super(props, context);
this.state = {
name: this.props.name
};
}
render () {
return (
<form
onSubmit={e => {
e.preventDefault()
this.handleSubmit()
}}
>
<input
placeholder="Name"
onChange={this.handleChange.bind(this)}
/>
<input type="submit" value="Add" />
</form>
);
}
handleChange (e) {
this.setState({ name: e.target.value });
}
handleSubmit () {
this.props.onUserSubmit(this.state.name);
this.setState({ name: '' });
}
}
我觉得这像是在打破 Redux 哲学,因为一个表示组件正在更新状态,对吗? 这是要与表示组件耦合的连接组件。
const mapDispatchToProps = (dispatch) => {
return {
onUserSubmit: (name) => {
dispatch(addUser(name))
}
}
}
const UserAddContainer = connect(
undefined,
mapDispatchToProps
)(UserAdd)
这是正确的做法,还是我把事情搞混了? 在 UserAdd 组件中调用 setState 并在按下每个键时更新状态 (handleChange) 是否正确?
谢谢
【问题讨论】:
标签: javascript forms reactjs redux react-redux