【发布时间】:2020-04-17 14:04:14
【问题描述】:
我正在从 firebase 实时数据库中获取一些数据。我在构造函数中创建了一个状态并初始化为一个空数组。稍后在componentDidUpdate 方法中,我使用setState 方法更新了状态。问题是在组件中调用了两次render 方法,并且数据每次都成倍增加。
this.state = {
values: [],
}
componentDidMount = () => {
firebase.database().ref('Table').once('value', (data) => {
var input = data.val();
this.setState({ values: input })
})
}
以及渲染方法:
var val = []; //global variable declared before class declaration
render() {
{
this.state.values.map(item => {
val.push(
<List>
<ListItem>
<Text>{item["value"]}</Text>
</ListItem>
</List>
)
})
}
return(
<View>
{val}
</View>
)
}
每次组件渲染时,列表项都会不断增加。我已经检查了文档,但找不到合适的解决方案。 https://reactjs.org/docs/react-component.html#componentdidmount
【问题讨论】:
-
val定义在哪里? -
它的 data.val()。我从数据库中获取价值。我将其存储在输入中。
-
不,我的意思是来自
val.push(...)的val -
好的。我已经定义了一个全局变量。在类声明之前将其声明为数组。
标签: javascript react-native firebase-realtime-database