Как исправить кучу рендеров React

Я пытаюсь самостоятельно сделать всплывающие окна в ReactJS у меня есть состояние с массивом объектов, объект в этом массиве и есть уведомление. Этот массив я передаю в компонент обертку и оттуда рендерю каждый Alert,

Сам state:

const [notification, setNotification] = React.useState([
    {
      notificationText: 'Hello world!',
      severity: 'success',
      title: 'Not error!',
    },
    {
      notificationText: 'Bye world!',
      severity: 'success',
      title: 'Not succes!',
    },
  ]);

Alert обертка

  <Stack sx={{ width: '100%' }} spacing={2}>
      {notification.map((item, i) => (
        <AlertItem
          key={item.notificationText + i}
          item={item}
          {...item}
          closeNotification={closeNotification}
        />
      ))}
  </Stack>

Функция удаления элемента из массива

  const closeNotification = (item) => {
    let filteredNots = notification.filter((el) => el !== item);
    setNotification(filteredNots);
  };

Сам компонент тут то и возникает проблема ререндеров

const AlertItem = ({ item, notificationText, severity, title, closeNotification }) => {
  React.useEffect(() => {
    setTimeout(() => {
      closeNotification(item);
    }, 5000);
  }, []);

  return (
    <Alert onClose={() => closeNotification(item)} severity={severity}>
      <AlertTitle>{title}</AlertTitle>
      {notificationText}
    </Alert>
  );
};

проблема - когда в массиве например 4 элемента количество ререндеров с каждым разом растет на 2 (сначала 4 потом 6 потом 8 и т.д), с чем это связано??

Как это исправить? Буду ОЧЕНЬ благодарен ответу!


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