Как вывести данные всех пользователей, имя фамилия год рождения с firebase создавая список в React

Здраствуйте, я новичок в JS и React, мне хотелось бы создать метод или что-то еще что бы выводить всех пользователей с базы данных в Sidebar в виде элементов списка таком виде:

отображение пациентов на Sidebar

Вот код App

import './app.css';
import axios from 'axios';
import React, { createContext, useEffect, useState } from 'react';
import Content from '../content/Content';
import PatientSidebar from '../patientsSidebar/PatientSidebar'
import { url } from '../../services/PatientService'

export const PatientContext = createContext([{}]);

function App() {
const [patients, setPatients] = useState([]);
const [sidebarPatients, setSidebarPatients] = useState([]);
const [selectedPatient, setSelectedPatient] = useState([]);

async function patientsHasChanged() {
    axios.get(`${url}/patientLoad.json`)
        .then((response) => {
            const patients = response.data;

            for (let patientId in patients) {
                console.log(
                    patients[patientId].firstname,
                    patients[patientId].lastname,
                    patients[patientId].age,
                    patients[patientId].birth,
                    patients[patientId].gender,
                    patients[patientId].country,
                    patients[patientId].state,
                    patients[patientId].city
                )
            }
        })
        .catch((error) => {
            console.error(error);
        })
        .then(() => {
            // always executed
        });

    // const newSelectedPatient = {
    // }
    
}

async function showPatients(patients) {

}

useEffect(() => {
    patientsHasChanged();
}, []);

return (
  <div className='app'>
    <PatientContext.Provider
    value={{patients, setPatients, sidebarPatients, setSidebarPatients, selectedPatient, setSelectedPatient}}>
          <PatientSidebar />
          <Content />
    </PatientContext.Provider>
  </div>
);

}

 export default App;

А здесь мне нужно выводить пользователей

import React, { useContext } from 'react';
import { PatientContext } from '../app/App'
import { useHistory } from 'react-router-dom';

const PatientSidebar = () => {
const { setSelectedPatient, sidebarPatients } = useContext(PatientContext);
const history = useHistory();

return (
    <div className='sidebar'>
        <div className='search'>
            <input type="text" placeholder='Search' className='search-form' />
            <a href="/patient/new"><button className='new-btn'>New patient</button></a>
        </div>

        <div className='list'>
            <ul>
                {
                    sidebarPatients.map((p) =>
                    <li key={p.id} id={p.id}>
                        <div id={p.id} className='name'>
                            {p.firstname}
                        </div>
                        <div id={p.id} className='age'>
                            {p.birth}
                        </div>
                    </li>)
                }
            </ul>
        </div>
    </div>
);
}

 export default PatientSidebar

Буду благодарен любой помощи, если нужна дополнительная информация спрашивайте, отпишу.


Ответы (1 шт):

Автор решения: Lev Shportak

Что то типа этого

async function getPatientsForSidebar() {
    axios.get(`${url}/patientLoad.json`)//тут должен быть адрес от куда запрашиваете данные
        .then((response) => {
            const patients = response.data;
            setSidebarPatients(patients)

            
        })
        .catch((error) => {
            console.error(error);
        })
        .then(() => {
            // always executed
        });

    // const newSelectedPatient = {
    // }
    
}
useEffect(() => {
    patientsHasChanged();
    getPatientsForSidebar()
}, []);
→ Ссылка