将用户输入作为数组从redux表单添加到状态
我试图将从redux表单接收到的数据放入我的状态。当用户提交表单时,会创建一个对象,但我无法将此数据推送到用户数组中。这是我的密码:将用户输入作为数组从redux表单添加到状态,redux,react-redux,redux-form,Redux,React Redux,Redux Form,我试图将从redux表单接收到的数据放入我的状态。当用户提交表单时,会创建一个对象,但我无法将此数据推送到用户数组中。这是我的密码: class UserControlPage extends Component { constructor(props) { super(props); this.state = { users: []}; this.handleSubmit = this.handleSubmit.bind(this); } handle
class UserControlPage extends Component {
constructor(props) {
super(props);
this.state = { users: []};
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit=(values) => {
const newUser = this.state.users;
newUser.push(addUser(values));
this.setState({ users: newUser });
}
render() {
return (
<div>
<legend>
<span className="glyphicon glyphicon-user" aria-hidden="true"></span> User creation
</legend>
<UserCreation onSubmit={this.handleSubmit}/>
</div>
);
}
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({addUser}, dispatch);
}
function mapStateToProps(users) {
return { users };
}
export default connect(mapStateToProps, mapDispatchToProps)(UserControlPage);
我猜问题一定是我没有正确地初始化用户状态或映射它。但我没有真正的线索
更新:
确实成功地创建了一个对象,但不幸的是,该对象似乎不存在。因此,我从表单中获取了一个包含数据的users对象,但在我的存储中,什么都没有。我修复了它。我没有正确地将我的状态映射到商店。我将handleSubmit()更改为: 到 以及我的状态映射
function mapStateToProps(users) {
return { users };
}
到
我还删除了构造函数中的这一行:
this.state = { users: []};
我认为您可能在这里寻找的是redux表单或选项,因为它们用于处理表单中的数组数据。另外,由于您使用的是redux和redux表单,因此使用React的组件状态来尝试存储此数据似乎有些奇怪。我想我的问题是,我尝试将数据存储在组件状态,但我的reducer似乎没有更新我的存储。我通过handlesubmit函数从表单中获取数据,这样至少可以工作。
handleSubmit=(values) => {
this.props.addUser(values);
}
function mapStateToProps(users) {
return { users };
}
function mapStateToProps(state) {
return { users: state.users };
}
this.state = { users: []};