i'm new to react and i'm playing around to see how the basic concepts work. I'm trying to render at list with data from a firebase server, the deta gets fetched ok but i'm having trouble rendering it in my listitem component.
Parent Component:
class App extends Component {
state = {
data: null as null | Data[]
}
componentDidMount() {
this.getData();
}
private getData(): void {
let _data = new Array < Data > ()
const db = firebase.firestore();
db.collection('data').get()
.then(snapshot => {
snapshot.docs.forEach(doc => {
let data: Data = {
id: doc.id,
name: doc.data().name,
description: doc.data().description,
country: doc.data().country,
town: doc.data().town,
lat: doc.data().lat,
long: doc.data().long,
created: doc.data().created,
updated: doc.data().updated,
img: doc.data().img
}
_data.push(data)
})
})
this.setState({
data: _data
})
}
render() {
let list = null;
if (this.state.data) {
list = (
<div > {
this.state.data.map(d => {
return <ListObject name = {d.name} />
})
} </div>
)
}
return (
<div>
<p> List </p>
{list}
</div>
)
}
}
export default App;
Child Component:
import React from 'react'
import './ListObject.css';
const listObject = (props: any) => {
return (
<div className="ListObject">
<p>i Am {props.name}</p>
</div>
)
};
export default listObject;
What am i doing wrong here? The ListObject component works outside of the iteration.