【问题标题】:How to access key state in React Native?如何在 React Native 中访问关键状态?
【发布时间】:2018-05-24 15:43:26
【问题描述】:

如何从某个状态访问密钥
我的状态是这样的:

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

【问题讨论】:

  • 尝试使用 push 而不是 +

标签: arrays react-native


【解决方案1】:

您正在使用 alert 来显示数组中的值,但您需要将它们从 javascript 值转换为 String 值才能显示。

所以,请尝试一下:

alert(JSON.stringify(this.state.arrayRoom))

它将为您显示数组的值。

【讨论】:

  • 我已经用过了。我真正想要的是获得键id 的值。有什么想法吗?
  • 好的。让我们使用 lodash 库从数组中提取 id 数组。然后使用alert显示
【解决方案2】:

好的,问题是您的状态对象是一个数组,但您正试图像访问对象一样访问它。还不清楚您是想用新的“数据”替换状态还是想简单地添加到它,所以我将尝试两者兼而有之。

如果您只是想替换状态,请先将状态更改为

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)}
  });
}

希望对你有帮助

【讨论】:

    【解决方案3】:

    如果你的 arrayRoom 是数组:

    alert(this.state.arrayRoom['id'])
    

    如果是对象

    alert(this.state.arrayRoom.id)
    

    或者

    alert(this.state.arrayRoom['id'])
    

    在第一次渲染中 this.state.arrayRoom['id'] 是未定义的 this.state.arrayRoom 是空的

    【讨论】:

      猜你喜欢
      • 2020-10-07
      • 1970-01-01
      • 2018-09-25
      • 2017-07-11
      • 2018-12-25
      • 1970-01-01
      • 2021-12-08
      • 2017-09-10
      • 2019-02-25
      相关资源
      最近更新 更多