Javascript 如何设置此嵌套对象的状态?
嗨,当我在一封电子邮件输入中按下“发送”按钮时,我在设置状态时遇到问题 我正试着按照React医生的建议避免突变 我的州属性如下:Javascript 如何设置此嵌套对象的状态?,javascript,reactjs,Javascript,Reactjs,嗨,当我在一封电子邮件输入中按下“发送”按钮时,我在设置状态时遇到问题 我正试着按照React医生的建议避免突变 我的州属性如下: state = { emailForm: { email: { elementType: 'email-invitation-input', elementConfig: { type: 'email', placeholder: 'Enter an email..',
state = {
emailForm: {
email: {
elementType: 'email-invitation-input',
elementConfig: {
type: 'email',
placeholder: 'Enter an email..',
},
value: '',
valid: true,
required: true
}
},
requestStatus : false,
validationMessage : null,
formIsValid: false,
}
因此,我尝试了三种方法,通过状态为我的电子邮件输入设置空值,但没有人起作用:(
第一次尝试:
我使用ES6 spread运算符更改它的值,但它不更改输入值:
this.setState({
email: {
...this.state.emailForm.email,
value: '',
},
});
this.setState({
email: Object.assign({}, this.state.emailForm.email, {
value: '',
}),
});
再次尝试使用immutability helper
包
import update from 'immutability-helper';
let newData = { email: {
...this.state.emailForm.email,
value: '',
}, };
this.setState({
email: update(this.state.newData, {
value: {$set: newData},
})
});
第二次尝试:
我使用了Ramda.js,但它都不起作用
setObjectByPath(fieldPath, value) {
this.setState({
emailForm: R.set(R.lensPath(fieldPath), value, this.state.emailForm)
})
}
setObjectByPath(this.state.emailForm.email,'');
第三次尝试:
我使用了react addons update
:
import update from 'react-addons-update';
this.setState({
email: update(this.state.newData, {
value: {$set: newData},
})
});
所有尝试都不执行任何操作,或者它会创建一个新的电子邮件输入,其下面的值为空
事先谢谢很有魅力,但我对如何使用这些软件包来设置我的状态存有疑问,无论如何,谢谢兄弟!
this.setState(prevState => ({
emailForm: {
email: {
...prevState.emailForm.email,
value: ''
}
}
}));