React로 만드는 탭
11309 단어 ReactTypeScriptnext.js
설명 없이 코드를 올려 놓습니다. 여기 의 기사를 보고 썼으므로 자세한 것은 분명히 참조해 주세요!
환경
완성은 이런 느낌
구성 설명
Tabs.tsx
Tabs.tsx
import React, { ReactElement, useState } from 'react';
import TabTitle from './TabTitle';
type Props = {
children: ReactElement[];
};
const Tabs: React.FC<Props> = ({ children }) => {
const [selectedTab, setSelectedTab] = useState(0);
return (
<div>
<ul>
{children.map((item, index) => (
<TabTitle
key={index}
title={item.props.title}
index={index}
setSelectedTab={setSelectedTab}
/>
))}
</ul>
{children[selectedTab]}
</div>
);
};
export default Tabs;
TabTitle.tsx
TabTitle.tsx
import React, { useCallback } from 'react';
type Props = {
title: string;
index: number;
setSelectedTab: (index: number) => void;
};
const TabTitle: React.FC<Props> = ({ title, index, setSelectedTab }) => {
const onClick = useCallback(() => {
setSelectedTab(index);
}, [setSelectedTab, index]);
return (
<li>
<button onClick={onClick}>{title}</button>
</li>
);
};
export default TabTitle;
Tab.tsx
Tab.tsx
import React from 'react';
type Props = {
title: string;
};
const Tab: React.FC<Props> = ({ children }) => {
return <div>{children}</div>;
};
export default Tab;
index.tsx
index.tsx
import React from 'react';
import Tab from '../components/Tabs/Tab';
import Tabs from '../components/Tabs/Tabs';
const index: React.FC = () => {
return (
<Tabs>
<Tab title='Lemon'>Lemon is yellow</Tab>
<Tab title='Strawberry'>Strawberry is red</Tab>
<Tab title='Pear'>Pear is green</Tab>
</Tabs>
);
};
export default index;
Reference
이 문제에 관하여(React로 만드는 탭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ke1t0/items/7ca096f26844ae7cd126텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)