Отображение массива в выпадающее меню

#javascript #reactjs

#javascript #reactjs

Вопрос:

Я пытаюсь отобразить некоторые данные в выпадающее меню, однако при расширении оно не отображает никаких данных. Но отображение данных в консоль работает.

Может ли быть проблемой, что данные извлекаются из базы данных на componentDidMount? Я заметил, что при загрузке страницы массив сначала регистрируется в консоли как пустой, а в следующую секунду в нем есть данные. У кого-нибудь есть какие-либо предложения о том, как это исправить?

Отображение в выпадающей кнопке:

 <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
    {console.log(this.state.devicenames)}
  {this.state.devicenames.map((number) => ( 
                        <a class="dropdown-item" href="#" >{number}</a>
                        ))}
  </div>
 

Получение данных из базы данных с помощью componentDidMout:

 componentDidMount() {
    const uid = this.state.user.uid;
        const serialRef = db.ref(uid   '/serials');
        serialRef.on('value', (serial_numbers) => {
          const serials = [];
          const devicename = [];
          serial_numbers.forEach((serial_number) => {
            const za = serial_number.val();
            const ta = za.serial;
            const nameRef = db.ref(ta   '/devicename');
        nameRef.on('value', (dname)=> {
          devicename.push(dname.val());
        })
      })
      this.setState({devicenames: devicename})
    })
}
 

Скриншот массива

Заранее спасибо!

Комментарии:

1. Похоже на что-то в рендеринге, может быть css или отсутствующий возврат, трудно увидеть без полного кода. Попробуйте отобразить какой-нибудь статический элемент, просто чтобы посмотреть, правильно ли вы выполнили рендеринг.

2. @Eran статический метод работает нормально. Я только что заметил, что он работает правильно, если я открываю страницу с выпадающим меню с другой страницы, однако в выпадающем списке не отображаются отображаемые данные, если я обновляю страницу. Затем выпадающий список снова становится пустым.

3. Можете ли вы войти: this.state.devicenames. длина ?

4. А также {this.state.devicenames.map((number) => { console.log(‘number=’,number) возвращает <a class=»выпадающий элемент» href=»#» >{number}</a> )}}