Как оптимизировать React код?

Я использовал функциональные компоненты, когда заметил страшную вещь - постоянные рендеры у компонента!
Так у меня была задумка, что по нажатию на кнопку у меня должен появиться определённый список. Он изначально не создан и создаётся один раз при вызове. Далее функция получения списка не нужна, так как список будет хранится в памяти. Для этого я пробовал использовать хуки useEffect и useMemo, но функция ( пока что console.log()) отрабатывает при каждом внешнем рендоре. Как бы исправить это?
Код родительского компонента:
import React, {memo, FC, useState} from 'react';
// @ts-ignore
import classes from  "./../../styles/MainPart.module.css"
import TitleInMainPart from "./MainPart/TitleInMainPart";
import {AllFriends} from "./MainPart/FC/AllFriends";

const MainPart: FC = memo(() => {

    const [NeedleList, SetNeedleList] = useState("");

    return (
        <div id="MainPart" className={classes.MainPart}>
            <TitleInMainPart  SetNeedleList={SetNeedleList}/>
            {NeedleList === "AllFriends"
            ?
                <AllFriends/>
            :
            NeedleList === "OnlineFriends"
            ?
                <>Онлайн</>
            :
            NeedleList === "Other"
            ?
                <>Прочее</>
            :
                <>Общие</>
            }
        </div>
    );

});

export default MainPart;

Код < AllFriends/> :
import React, {FC, memo, useEffect, useMemo, useState} from 'react';
import {useDispatch} from "react-redux";
import {useTypesSelector} from "../../../hooks/useTypesSelector";

export const AllFriends: FC = memo(() => {

    const Dispatch = useDispatch(),
        // @ts-ignore
        page = useTypesSelector(state => state.page.ThisPageState1),
        [AllFriendsList, SetAllFriendsList] = useState([]);

    useMemo( () => {
        console.log("Отрабатало!")
    }, [AllFriendsList])

    return (
        <div className="AllFriends">

        </div>
    );

});

P.S. список должен создаться в < AllFriends/>
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы