добавить данные из запроса firestore в объект массива и сопоставить их с Picker react native - PullRequest
1 голос
/ 29 мая 2020

мой конструктор имеет:

this.ActiveDelegation = {
  cityArr: [],
  name: '',
  expiration: '',
}

вот как я получаю данные из firestore в объект, и я предполагаю, что он добавляет имя внутри cittyArr[], которое я создал

getDelegationList = (querySnapshot) => {
  console.log("snapshot")
  querySnapshot.forEach((res) => {
    const {name, expiration} = res.data();
    console.log('res is =>', res.data())
    this.ActiveDelegation.cityArr.push({
      key: res.id,
      res,
      name,
      expiration,
    });
    //return  <Picker.Item value={name} label={name} />
  });
  console.log('test2: ', this.ActiveDelegation.cityArr)
  //console.log('test12312: ',this.ActiveDelegation.cityArr.city)

  delegList = () => {
    return (this.ActiveDelegation.cityArr.map((c, i) => {
        return (
          <Picker.Item label = {c.name} value = {c.name} key = {i}/>
        )
      }
    ))
  }
}

это внутри рендера:

<Item picker>
  <Picker
    mode="dropdown"
    style={{ width: 20 }}
    placeholder="choose destination"
    placeholderStyle={{ color: "#bfc6ea" }}
    placeholderIconColor="#007aff"
    // selectedValue={this.state.Destination}
    // onValueChange={this.onValueChangeG.bind(this)}
    selectedValue={this.state.selectedDest}
    onValueChange={ (value) => ( this.setState({selectedDest: value}) ) } >
    {this.delegList}
    {/*{cityItems}*/}
    <Picker.Item label="select" value="" />
  </Picker>
</Item>

но в моем сборщике ничего не происходит .. может кто-нибудь помочь?

1 Ответ

1 голос
/ 29 мая 2020

Я нашел решение. просто использовал карту внутри самого рендера в области выбора:

<Item picker>
  <Picker
    mode="dropdown"
    style={{ width: 20 }}
    placeholder="choose destination"
    placeholderStyle={{ color: "#bfc6ea" }}
    placeholderIconColor="#007aff"
    selectedValue={this.state.Destination}
    onValueChange={ (value) => ( this.setState({Destination: value}) ) } >
    {/* onValueChange={this.onValueChangeG.bind(this)} >*/}
    {/*<Picker.Item label="choose" value="" />*/}
    {
      this.state.destinationArr.map( (city, i) => {
        return (
          <Picker.Item label={city.name} value={city.name} key={i} />
        )
      })
    }
  </Picker>
</Item>

исправлено *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...