CSS만 사용하여 React Accordion 구성 요소 만들기
8371 단어 typescriptreact
전체 구성 요소의 대부분의 스타일은 생략하고 전환에 영향을 미치는 중요한 요소에 집중했습니다.
import React, { MutableRefObject, useRef, useState } from 'react'
import { appConfig } from '../appConfig'
interface AccordionProps {
title: React.ReactNode
content: React.ReactNode
}
export const Accordion: React.FC<AccordionProps> = ({ title, content }) => {
const [showExtraContent, setShowExtraContent] = useState(false)
const [height, setHeight] = useState('0px')
const contentSpace = useRef(null) as MutableRefObject<HTMLDivElement>
function toggleAccordion() {
setShowExtraContent((previousState) => !previousState)
setHeight(showExtraContent ? '0px' : `${contentSpace.current.scrollHeight}px`)
}
return (
<div className="container">
<button
onClick={toggleAccordion}
>
<p>{title}</p>
<img
src={'/assets/img/icons/chevron-up.svg'}
alt="Chevron icon"
className={`${showExtraContent ? 'rotate' : null} arrow`}
/>
</button>
<div
ref={contentSpace}
style={{ maxHeight: `${height}` }}
className="extra-content"
>
<div>{content}</div>
</div>
</div>
)
}
다음은 해당 CSS 스타일입니다.
.container {
display: flex;
flex-direction: column;
}
.arrow {
transition: 0.3s;
}
.rotate {
transform: rotate(180deg);
}
.extra-content {
overflow: hidden;
transition: max-height 0.3s ease-in-out;
}
이 게시물이 좋아요? 자세한 내용은 https://bionicjulia.com/blog에서 확인하세요.
Reference
이 문제에 관하여(CSS만 사용하여 React Accordion 구성 요소 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bionicjulia/creating-a-react-accordion-component-using-just-css-h11텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)