Как получить доступ к состоянию ключа в React Native? - PullRequest
0 голосов
/ 24 мая 2018

Как я могу получить доступ к ключу из состояния
Мое состояние выглядит следующим образом:

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 голосов
/ 25 мая 2018

Хорошо, проблема в том, что ваш объект состояния является массивом, но вы пытаетесь получить к нему доступ как к объекту.Также неясно, хотите ли вы заменить состояние вашими новыми «данными» или вы просто хотите добавить их, поэтому я попытаюсь сделать и то и другое.

В случае, когда вы просто хотите заменитьсначала состояние меняется на

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

Надеюсь, это поможет

0 голосов
/ 25 мая 2018

Если ваш arrayRoom является массивом:

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

Если это объект

alert(this.state.arrayRoom.id)

Или

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

И в первом рендере this.state.arrayRoom ['id'] не определено this.state.arrayRoom пусто

0 голосов
/ 24 мая 2018

Вы используете оповещение для отображения значения из массива, но вам необходимо преобразовать их из значения javascript в значение String для отображения.

Итак, попробуйте:

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

Этопокажет значение массива для вас.

...