Firebaseから抽出するデータがあります。それはlistviewで完全にうまく表示されます。しかし、今ではそれらをネイティブベースのカードに表示する必要があります。これは私がhttps://github.com/GeekyAnts/NativeBase/issues/347しようとしたコードですが、私はエラーを取得:未定義のは、私が使用したコードだオブジェクトネイティブベースのカードは、ネイティブベースとFirebaseで動的に反応します。
import CardItem from'./CardItem'
import {Container, Content, Card, Body, Title} from 'native-base';
export default class SixteenTab extends Component {
constructor(props) {
super(props);
this.itemsRef = this.getRef().child('docs/topics/topics_2016/');
}
componentDidMount() {
// start listening for firebase updates
this.listenForItems(this.itemsRef);
}
getRef() {
return firebaseApp.database().ref();
}
listenForItems(itemsRef) {
itemsRef.on('value', (snap) => {
var items = [];
snap.forEach((child) => {
items.push({
title: child.val().title,
_key: child.key
});
});
this.setState({
items: items
});
});
}
render() {
return (
<View>
<Card dataArray={this.state.items}
renderRow={(item) => this._renderItem(item)}>
</Card>
</View>
)
}
_renderItem(item) {
return (
<CardItem item={item}/>
);
}
}
CardItemページ
class CardItem extends Component {
render() {
return (
<View style={styles.listItem}>
<Text style={styles.liText}>{this.props.item.title}</Text>
</View>
);
}
}
はありませんが、私は画像のようなエラーを取得しておきます私はコンソールで見ることができるので、すべての項目はfirebaseデータベースから正しく抽出されました。
コンストラクタでこのラインthis.state = { items: [] };
を入れた後、私はイルファンの第二の方法をしようとしたとき、私はこの警告を取得し、何も画面に
を取得するということ最終的に書いたがまだ動作していない
export default class SixteenTab extends Component {
constructor(props) {
super(props);
this.itemsRef = this.getRef().child('docs/topics/topics_2016/');
this.state = { items: null };
}
componentDidMount() {
this.listenForItems(this.itemsRef);
}
componentWillMount() {
this.setState({
items:[]
});
}
getRef() {
return firebaseApp.database().ref();
}
listenForItems(itemsRef) {
itemsRef.on('value', (snap) => {
var items = [];
snap.forEach((child) => {
items.push({
title: child.val().title,
_key: child.key
});
});
this.setState({
items: items
});
});
}
render() {
return (
<View>
<Content>
<Card>
{
this.state.items.map((item,index)=>{
return (
<CardItem key={index}>
<View>
<Text>{item.title}</Text>
</View>
</CardItem>
)
})
}
</Card>
</Content>
</View>
)
}
_renderItem(item) {
return (
<ListItem item={item}/>
);
}
こんにちはイルファン..ありがとうしかし、私は今、別の警告を受ける<私は疑問に上記製の編集をチェックして、あなたがこのようなCardItemコンポーネントの一意のキーを持っている必要があります – user3521011
お邪魔して申し訳ありませんしてくださいCardItem:このようにキー= {インデックス}> –
Irfanもう一度ありがとう..しかし、まだ空白のページ..私は私の質問を編集し、全体のコードを投稿する必要がありますか? – user3521011