如何从州访问密钥 我的州看起来像这样:
this.state = {
arrayRoom:[],
};
然后我在我的组件上有一个onPress函数来设置这样的状态:
onPress={() => this.handleRoomPicker({ "id":rooms.id, "name":rooms.name, "price": rooms.real_price})}
功能代码如下:
handleRoomPicker(data){
this.setState({arrayRoom:this.state.arrayRoom + data}, function(){
alert(this.state.arrayRoom.id)
})
}
警报始终返回undefined
。
我也尝试使用:
alert(this.state.arrayRoom.['id'])
仍然返回undefined
。
我该如何解决?
答案 0 :(得分:0)
您正在使用alert来显示数组中的值,但您需要将它们从javascript值转换为String值以进行显示。
所以,请尝试一下:
alert(JSON.stringify(this.state.arrayRoom))
它将为您显示数组的值。
答案 1 :(得分:0)
好的问题是你的状态对象是一个数组,但你试图像对象一样访问它。还不清楚你是否想用新的'数据'替换状态,或者你只想添加它,所以我将尝试两者都做。
如果您只想更换状态,请先将状态更改为
this.state = {
arrayRoom: { },
}
然后handleRoomPicker看起来像
handleRoomPicker(data){
this.setState( {arrayRoom: data , function(){
alert(this.state.arrayRoom.id)
}});
}
如果你想添加到arrayRoom对象(如果里面有其他键你不想丢失)
this.state = {
arrayRoom: { },
}
handleRoomPicker(data){
this.setState({
arrayRoom: {...this.state.arrayRoom, data},
funtion() { alert(this.state.arrayRoom.id)}
});
}
希望这有帮助
答案 2 :(得分:0)
如果您的arrayRoom是数组:
alert(this.state.arrayRoom['id'])
如果是对象
alert(this.state.arrayRoom.id)
或
alert(this.state.arrayRoom['id'])
首先渲染this.state.arrayRoom ['id']是未定义的 this.state.arrayRoom为空