React / Jasvascript: динамическая настройка имени класса в функции map

#javascript #reactjs

#javascript #reactjs

Вопрос:

У меня есть функция для отображения навигации на панели инструментов пользователя. Эта функция должна установить активную функцию для этого элемента, по умолчанию используется 1 начальный элемент / ссылка.Но я получаю бесконечный цикл.

 const UserLinks = [
  {
    name: "User Details",
    linkTo: "/dashboard",
  },
  {
    name: "Change Password",
    linkTo: "/dashboard/changePassword",
  },
];
const DasboardLinks = () => {

  const [active, setActive] = useState(1);

  return (
    <SectionNavigation>
      <ul>
        { UserLinks.map((link, i) => (
              <li key={i} className={active === i ? "active" : ""}
            onClick={setActive(i)}>
                <Link to={link.linkTo}>{link.name}</Link>
              </li>
            ))}
      </ul>
    </SectionNavigation>
  );
};
 

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

Ответ №1:

Вы вызываете SetActive вместо передачи функции:

 onClick={() => setActive(i)}>
 

Комментарии:

1. какая глупая ошибка, спасибо, что я этого не сделал 🙂