【发布时间】:2016-06-29 22:57:43
【问题描述】:
所以我有两个输入字段:
<TextField onChange={this.handleUserUsername.bind(this)}
value={this.props.userInfo.username}
/>
<TextField onChange={this.handleUserEmail.bind(this)}
value={this.props.userInfo.email}
/>
一旦输入,我想将它们存储在名为“userInfo”的对象的状态中,如下所示:
handleUserUsername(event){
this.props.actions.updateUsername(event.target.value)
}
handleUserEmail(event){
this.props.actions.updateEmail(event.target.value)
}
动作创建者是:
updateUsername: function(eventValue){
return {
type: 'UPDATE_USERNAME',
username: eventValue
}
},
updateEmail: function(eventValue){
return {
type: 'UPDATE_USERNAME',
email: eventValue
}
}
reducer 是:
function(userInfo={}, action){
switch(action.type){
case 'UPDATE_USERNAME':
return {
username: action.username
}
case 'UPDATE_EMAIL':
return {
email: action.email
}
但是一旦文本被输入到用户名 TextField 中,它会显示在 TextField 中输入的任何内容,并正确存储“用户名”的“Z”并记录以下内容(在示例中,输入了“Z”):
然后,当在本例中将文本“M”输入到电子邮件 TextField 中时,用户名状态在应保持为 Z 时变为“未定义”,甚至不存储电子邮件状态:
在示例的日志中,我希望看到的是:
userInfo: Object
username: "Z"
email: "M"
我正在使用以下内容来访问状态和操作:
function mapStateToProps(state) {
return state
}
function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators(actions, dispatch)
}
}
为什么它没有正确存储“userInfo”对象的状态?更新此类对象的正确方法是什么?最终,我想将“userInfo”对象存储到一个名为 users 的数组中,它将存储所有用户信息。
编辑**
当我在用户名文本字段中输入“q”时,显示如下:
然后,当我在密码文本字段中输入“m”时,现在两者都变得未定义:
编辑 2 **
const registerReducer = function(userInfo={}, action){
switch(action.type){
case 'UPDATE_USERNAME':
return {
...userInfo,
username: action.username
}
case 'UPDATE_EMAIL':
return {
...userInfo,
email: action.email
}
【问题讨论】:
标签: javascript reactjs textfield redux react-jsx