[英]React-bootstrap-table2 doesn't show data from Firebase
我一直在尝试从 Firebase 实时数据库中检索数据并将其显示在 react-bootstrap-table2 中,但是在实际显示数据时遇到了一些问题。 当我运行代码时,表中没有打印任何值,但是,控制台中没有错误。 如果我将表中显示的值的数量设置为 25,则会出现错误:Uncaught TypeError: Cannot read property 'timestamp' of undefined。 但是,如果我使用 console.log 时间戳,我首先会得到一个空数组,然后是一个带有时间戳值的数组(参见下面的屏幕截图)。
这是我的代码:
const App = () => {
const timestamp = [];
const getTimestamp = () => {
const database = db.ref().child("timestamped_measures");
database.on("value", (ts_measures) => {
ts_measures.forEach((ts_measure) => {
const array = {
time: ts_measure.val().timestamp,
};
timestamp.push(array);
});
});
};
const columns = [{ dataField: "time", text: "Timestamp" }];
useEffect(() => {
getTimestamp();
}, []);
console.log(timestamp);
return (
<div className="App">
<BootstrapTable
keyField="timestamp"
data={timestamp}
columns={columns}
pagination={paginationFactory()}
/>
</div>
);
};
export default App;
有谁知道为什么我的版本不起作用? 任何帮助,将不胜感激!
由于您使用的是功能组件,因此请使用挂钩来设置 state,这将在设置 state 后重新渲染您的组件:
const App = () => {
// Make timestamp state
const {timestampList, setTimestampList} = React.useState([]);
const timestamp = [];
const getTimestamp = () => {
const database = db.ref().child("timestamped_measures");
database.on("value", (ts_measures) => {
ts_measures.forEach((ts_measure) => {
const array = {
time: ts_measure.val().timestamp,
};
timestamp.push(array);
});
// Set array to timestamp state array
setTimestampList(timestamp);
});
};
const columns = [{ dataField: "time", text: "Timestamp" }];
useEffect(() => {
getTimestamp();
}, []);
console.log(timestamp);
return (
<div className="App">
<BootstrapTable
keyField="timestamp"
data={timestampList} // Pass timestamp state to data prop
columns={columns}
pagination={paginationFactory()}
/>
</div>
);
};
export default App;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.