Сопоставить массив в функциональном компоненте - PullRequest
0 голосов
/ 14 февраля 2020
function TypeArticleOne(props) {
let apiData = props.apiData;
const [ therapists, setTherapists ] = useState(apiData.topProfiles.therapists);
const [speciality, setSpeciality]= useState('ABA');
const [pageLoading, setPageLoading]= useState(true);

const topProfilesUrl = 'therapists/top/profiles'

useEffect(() => {
    console.log(speciality);
    getTopTherapists();
    window.scrollTo(0, 0);

}, []);

const getTopTherapists = () => {
    setPageLoading(true);
    loadTopTherapists();

};

const loadTopTherapists = () => {
    console.log("second");
    props.actions.reqGetTherapistsTopProfiles({
        body: {},
        headers: null,
        resource: `${topProfilesUrl}`
    })
};

useEffect(() => {

    if (apiData.topProfiles && apiData.topProfiles.success) {
        const therapistsLoad = apiData.topProfiles.therapists;
        setPageLoading(false);
        setTherapists([therapists].concat(therapistsLoad));
    }
    }, []);

Как отобразить массив в функциональный компонент? Я хочу отобразить массив терапевтов из функционального компонента выше. Я вызываю терапевтов в массиве из базы данных, и мне нужно сопоставить их для рендеринга на карте внутри функционального компонента.

const renderTherapists = (props) => {
    const items = props.therapists.map( (t, idx) => (
        <TherapistCard therapist={t} key={idx} />
    ))

    return (
        <div ref={0} className="therapist-list">
            { items }
        </div>
    )
}

1 Ответ

0 голосов
/ 14 февраля 2020

РЕДАКТИРОВАТЬ: Возможно, вам не нужен фрагмент реагирования, поскольку у вас уже есть, как указано в комментариях. Возможно, точка на деструктуризации все еще может помочь.

ORIGINAL:

Возможно, вам понадобится обернуть массив в React Fragment (<>{array}</>). Это необходимо, так как вы не можете напрямую вернуть массив компонентов.

Также не уверен, какова структура вашего therapist объекта, но если вы хотите destructure , то это должно быть ({t, idx}) => вместо (t, idx) => (добавьте фигурные скобки).

const renderTherapists = (props) => {
    const items = props.therapists.map( ({t, idx}) => (
        <TherapistCard therapist={t} key={idx} />
    ))

    return (
        <div ref={0} className="therapist-list">
            <>
               { items }
            </>
        </div>
    )
}

Это для Реакция 16.2.0 и выше. Смотрите сообщение в блоге здесь: https://reactjs.org/blog/2017/11/28/react-v16.2.0-fragment-support.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...