В моем компоненте реакции, когда компонент монтируется, я хочу запустить функцию loadData (), чтобы заполнить массив объектов людей в состоянии.
Этот компонент называется UserDisplaySection.js
componentDidMount() {
this.loadData();
}
, который вызывает функцию для загрузки данных:
loadData = () => {
const db = fire.database();
const ref = db.ref('User');
let currentState = this.state.people;
ref.on('value', (snapshot) => {
snapshot.forEach( (data) => {
const currentStudent = data.val();
let user ={
"email" : currentStudent.Email,
"name": currentStudent.Name,
"age": currentStudent.Age,
"location": currentStudent.Location,
"course": currentStudent.Course,
"interests": currentStudent.Interests
}
currentState.push(user);
});
});
this.setState({
people: currentState
});
}
Из другого компонента, называемого Home.js, я отображаю UserDisplaySection.js с переключателем кнопки, которая устанавливает состояние логического значения willDisplayUser, которое по умолчанию инициализируется как false.
handleDisplayUsers = e => {
e.preventDefault();
this.setState({
willDisplayUsers: !(this.state.willDisplayUsers),
});
}
render() {
return (
<div>
<button className="mainButtons" onClick={this.handleDisplayUsers}>View Users</button> <br />
{this.state.willDisplayUsers ? <UserDisplaySection/>: null}
</div>
);
}
Примечание: функция работает и заполняет состояние правильными данными, но толькопосле того, как я рендерил компонент UserDisplaySection.js во второй раз и работал отлично, пока я не перезагрузил страницу