32. 여러 JSX 슬롯 활용법
function Tabs({ children, buttons }) {
return (
<>
<menu>
{buttons}
</menu>
{children}
</>
)
}
export default Tabs
import { useState } from "react";
import Tabs from "./Tabs";
function Examples() {
const [selectedTopic, setSelectedTopic] = useState("components");
let tabContent = <p>Please select a topic.</p>;
if (selectedTopic) {
tabContent = (
<div id="tab-content">
<h3>{EXAMPLES[selectedTopic].title}</h3>
<p>{EXAMPLES[selectedTopic].description}</p>
<pre>
<code>
{EXAMPLES[selectedTopic].code}
</code>
</pre>
</div>
)
}
function handleSelect(selectedButton) {
setSelectedTopic(selectedButton);
}
return (
<>
<Tabs buttons={
<>
<TabButton
isSelected={selectedTopic === 'components'}
onSelect={() => handleSelect('components')}
>
Components
</TabButton>
<TabButton
isSelected={selectedTopic === 'jsx'}
onSelect={() => handleSelect('jsx')}
>
JSX
</TabButton>
<TabButton
isSelected={selectedTopic === 'props'}
onSelect={() => handleSelect('props')}
>
Props
</TabButton>
<TabButton
isSelected={selectedTopic === 'state'}
onSelect={() => handleSelect('state')}
>
State
</TabButton>
</>
}>
{tabContent}
</Tabs>
</>
)
}