Итерации по массиву символов - PullRequest
0 голосов
/ 06 августа 2020

Я хотел бы спросить, можно ли как-то перебрать массив символов. У меня есть этот код:

import React, { FunctionComponent, useState } from "react";

import { bemClassNames } from "@multiweb/reactUtils";

export type TabsProps = {
  children: any;
}

export const Tabs: FunctionComponent<TabsProps> = ({
  children
}) => {
  const classNames = bemClassNames("tabs-component");

  const tabs = children;

  const [activeTabIndex, setActiveTabIndex] = useState(0);

  const handleTabClick = (tabIndex: number) => {
    setActiveTabIndex(tabIndex === activeTabIndex ? activeTabIndex : tabIndex);
  }

  return (
    <div className={classNames()} role="tabpanel">
      <ul className={classNames("tabs-nav")}>
        {tabs.map((child: any, index: number) => {
          return React.cloneElement(child, {
            tabIndex: index,
            onClick: handleTabClick,
            isActive: index === activeTabIndex
          });
        })}
      </ul>
    </div>
  );
}

Я получаю эту ошибку: TypeError: tabs.map не является функцией.

Итак, я предлагаю, что мне нужен какой-то метод для итерации по массиву Символы или преобразование символов в строки, например. Знаете ли вы кого-нибудь, как это сделать?

Большое спасибо.

1 Ответ

0 голосов
/ 06 августа 2020

Пожалуйста, используйте React.Children.map для итерации См. Пример:

        <div>
        {React.Children.map(children, (child, i) => {          
          return child
        })}
      </div>

PS Не существует специального метода для итерации по массиву символов. Вы можете просто использовать map, reduce, forEach ...

...