gpt4 book ai didi

javascript - React Native 中的 FlatList 不会从 firebase 渲染子项

转载 作者:行者123 更新时间:2023-11-28 03:57:06 26 4
gpt4 key购买 nike

我正在尝试做什么

我正在尝试向我正在创建的一个非常基本的社交媒体应用程序添加评论,方法是通过按键引用他们想要评论的帖子,然后让用户将他们的评论推送到帖子中。然后,我将使用平面列表来呈现所有评论。

问题

FlatList 没有渲染任何内容。我检查了 firebase,并且有评论,但是当我尝试运行平面列表时,没有任何呈现。我希望得到一些帮助来渲染 FlatList!

我的代码

从 firebase 获取评论:

getItems(){
var items = [];
var query = ref.child(this.state.passKey).orderByKey();
query.once ('value', (snap) => {
snap.forEach ( (child) => {
items.push({
comment: child.val().comment,
});
});
}).then(() => {
this.setState({firebaseItems: items});
});
}

passKey 是帖子的字符串 key 。ref 只是引用我的 firebase 中的帖子部分。渲染 FlatList:

 <FlatList>
data = {this.state.firebaseItems}
renderItem={({ item, index }) =>
<View>
<View style={{width: parseInt(this.state.postWidth), height: ((item.content.length/3)*2 + 60), backgroundColor: '#ffffff', alignItems: 'center', justifyContent: 'center', paddingLeft: 10, paddingRight:10, borderRadius:5}}>
<Text style={{fontSize: 18, color: '#000000', textAlign: 'center'}}>
{ item.comment }
</Text>
</View>
<View style={{width: 1, height: 4, backgroundColor: '#e8e8e8'}} />
</View>
}
</FlatList>

以及我的 firebase 的布局:

posts:
-Kzrip74SH7430djfS:
content: 'This is a post. Above me is a random key example'
-KzGh589sjSJfjjds:
comment: 'this is a comment example. The key for the comment is nested at the same level as the content.'
-Kz5ghSr8uerSvjrnd:
comment: 'this is another comment.'
-Kzwehhherhwpgi:
content: 'this is another post.'

最佳答案

import React, { Component } from 'react';
import { FlatList, View, Text } from 'react-native';
import * as firebase from 'firebase/app';

class MessageList extends Component {
constructor(props) {
super(props);
this.state = { firebaseItems: {} };
}

componentWillMount() {
this.getItems();
}

getItems = () => {
var items = [];

firebase.database().ref('/posts').orderByKey().on('value', (snap) => {
snap.forEach((child) => {
items.push({
comment: child.val().comment,
});
});
this.setState({firebaseItems: items})
}, error => console.log(error));
};

renderRow = ({item, index}) => {
return (
<View style={{
width: 100,
height: ((item.length / 3) * 2 + 60),
backgroundColor: '#ffffff',
alignItems: 'center',
justifyContent: 'center',
paddingLeft: 10,
paddingRight: 10,
borderRadius: 5
}}>
<Text style={{
fontSize: 18,
color: '#000000',
textAlign: 'center'
}}>
{item.comment}
</Text>
</View>
);
};

render() {
return (
<FlatList data={this.state.firebaseItems}
renderItem={this.renderRow}/>
);
}
}

export default MessageList;

关于javascript - React Native 中的 FlatList 不会从 firebase 渲染子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47480113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com