【发布时间】:2021-05-20 14:45:18
【问题描述】:
我正在尝试将 firebase 数据提取到一个数组中,并为每个元素创建一个按钮,并将该元素作为 id 和名称。
import React, { Component } from 'react'
import app from './firebase'
import firebase from "firebase/app";
import "firebase/database"
import { BsFillSquareFill } from "react-icons/bs";
import { Container,Row, Col } from "react-bootstrap";
import { withRouter } from 'react-router-dom';
var chambers = []
export default class ChamberClass extends Component {
constructor(props) {
super(props);
}
getButtonsUsingMap = () => {
return chambers.map((number) => {
return <button id={number} onClick={this.routeChange} className="btn"><BsFillSquareFill key = {number} color='green' className="icon "/>
<center>{number}</center>
</button>
})
}
componentDidMount(){
var chamberListen = firebase.database().ref()
chamberListen.on('value', snapshot => {
snapshot.forEach((cham) => {
var chamKey = cham.key;
var chamData = cham.val();
chambers.push(chamKey)
// document.getElementById("Chambers").innerHTML = chambers
console.log(chambers)
})
})
}
render() {
return (
<div>
<h4 className='RoomsTitle'>Rooms</h4>
<hr></hr>
{this.getButtonsUsingMap()}
</div>
)
}
}
我确实得到了控制台日志,这可能意味着 Firebase 数据正在被正确访问。但是,没有创建任何按钮。 此外,当我将 componentDidMount() 中的代码块移动到 ChamberClass 的顶部时,按钮确实会显示但只显示一次。在重新加载或手动进入路线后每次连续尝试后也无济于事。
【问题讨论】:
标签: reactjs firebase-realtime-database