如何在React Native中访问密钥状态?

时间:2018-05-24 15:43:26

标签: arrays react-native

如何从州访问密钥 我的州看起来像这样:

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
我该如何解决?

3 个答案:

答案 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为空