React Native - 状态内对象的setState
React Native - setState on object inside state
我在模态屏幕上有两个文本输入,当我填充第一个输入时 - 状态已更新,当我跳到第二个输入并开始输入时 - 第一个输入的值为空。
代码如下:
constructor(){
super()
this.state={
Modal: {
EduModalVisible: false,
ProTitleModalVisible: false,
PsychoModalityModalVisible: false,
},
User: {
NameOfFaculty: '',
YearOfGraduate: '',
}
}
}
文本输入如下所示:
<TextField label={'Faculty'} highlightColor={'#76a6ef'}
value={this.state.User.NameOfFaculty} onChangeText={(faculty) => this.setState({User: { NameOfFaculty: faculty }})} />
<TextField label={'Year Of Graduation'} highlightColor={'#76a6ef'}
value={this.state.User.YearOfGraduate} onChangeText={(year) => this.setState({User: { YearOfGraduate: year }})} />
我认为问题出在更新状态中对象的状态,但我不确定如何解决这个问题。
举个例子:https://snack.expo.io/rkeQ7cxWb
您需要为现有对象分配 属性 以保留其内容:
onChangeText={(faculty) => {
const User = Object.assign({}, this.state.User, { NameOfFaculty: faculty });
this.setState({ User });
}}
我在模态屏幕上有两个文本输入,当我填充第一个输入时 - 状态已更新,当我跳到第二个输入并开始输入时 - 第一个输入的值为空。
代码如下:
constructor(){
super()
this.state={
Modal: {
EduModalVisible: false,
ProTitleModalVisible: false,
PsychoModalityModalVisible: false,
},
User: {
NameOfFaculty: '',
YearOfGraduate: '',
}
}
}
文本输入如下所示:
<TextField label={'Faculty'} highlightColor={'#76a6ef'}
value={this.state.User.NameOfFaculty} onChangeText={(faculty) => this.setState({User: { NameOfFaculty: faculty }})} />
<TextField label={'Year Of Graduation'} highlightColor={'#76a6ef'}
value={this.state.User.YearOfGraduate} onChangeText={(year) => this.setState({User: { YearOfGraduate: year }})} />
我认为问题出在更新状态中对象的状态,但我不确定如何解决这个问题。
举个例子:https://snack.expo.io/rkeQ7cxWb
您需要为现有对象分配 属性 以保留其内容:
onChangeText={(faculty) => {
const User = Object.assign({}, this.state.User, { NameOfFaculty: faculty });
this.setState({ User });
}}