3 回答
TA贡献1779条经验 获得超6个赞
“使用检查员,卢克!” ~ 欧比旺 Reactnobi
在您的setState通话中,您正在合并状态本身的内容newUser以及first_name状态本身,而不是状态的newUser字段。因此,在更新状态后,您最终会得到以下数据:
{
newUser: { /* the initial value*/ },
// all the other proprerties inside `newUser`, such as
email: "",
age: 0,
// then the key you merged into the state explicitly:
first_name: "whatever the user typed"
}
你可能打算这样写(记住这setState已经是一个浅合并,所以只有newUser在你的状态对象中有更多值时才会更新):
this.setState({
newUser: {
...this.state.newUser,
first_name: text
}
})
TA贡献1793条经验 获得超6个赞
你能试试这个
onChangeText={(text) => this.setState({
newUser : {
...this.state.newUser,
first_name: text,
}
}), () => {console.log(this.state.newUser.first_name)}
TA贡献1810条经验 获得超5个赞
首先,您必须仅使用根对象更新状态
你不能像那样更新状态
onChangeText={(text) => this.setState({
...this.state.newUser,
first_name: text
}), () => {console.log(this.state.newUser.first_name)}}
让我给你我的自定义函数。
updateObject = (oldObject, updatedProperties) => {
return {
...oldObject,
...updatedProperties
};};
你可以这样使用
onChangeText={(text) => {
let updatedFormElement ;
updatedFormElement = this.updateObject(this.state.newUser, {
first_name: text
});
this.setState({ newUser: updatedFormElement });
}}
添加回答
举报