React-spring으로 멋진 측면 서랍을 만드는 방법
요구 사항
그것을 분해
요구 사항을 고려하여 먼저 단계로 분류해야 한다고 생각했습니다.
코드 따라
무엇보다도 on-click 이벤트를 처리할 버튼을 만들어 봅시다. 클릭 이벤트는 측면 서랍의 상태를 전환해야 합니다.
export default function App() {
const [show, setShow] = useState();
return (
<div className="App">
<button onClick={() => setShow((prevState) => !prevState)}>
Click me
</button>
</div>
);
}
충분히 쉽습니다. 이제 우리가 방금 생성한 state에 react-spring 연결을 시작하겠습니다. 먼저 애니메이션이 어떻게 작동할지 생각하면서 오버레이를 표시하고 동시에 측면 서랍을 밀어내고 싶습니다. 사이드 드로어 내부의 내용물은 그다지 중요하지 않지만 전환을 유동적으로 사용하고 상태 관리 오류를 방지하기 위해 useTransitition을 사용하겠습니다.
useTransition은 라이프사이클을 다루는 작업을 위해 특별히 react-spring에서 제공하는 후크입니다!
const transitions = useTransition(show, null, {
from: { position: "fixed", opacity: 0, width: 0 },
enter: { opacity: 1, width: 320 },
leave: { opacity: 0, width: 0 }
});```
Now let’s break down the hook itself. We are evaluating the show state we had set earlier and are declaring two styles to adjust: the opacity of the overlay and the width of the side drawer.
### The Overlay
First, let’s code up the overlay; all we have to do is display a dimmed div.
```js
<div className="App">
<button onClick={() => setShow((prevState) => !prevState)}>
Click me
</button>
{transitions?.map(
({ item, key, props }) =>
item && (
<animated.div
key={key}
style={{ opacity: props.opacity }}
className="overlay"
/>
)
)}
</div>
전환을 매핑해야 합니다. 핵심은 반응이 배열의 다른 항목을 구별하는 것입니다. 지금은 오버레이에만 관심이 있기 때문에 이전 후크에서 선언한 불투명도를 전달할 것입니다.
사이드 서랍
이제 내부 서랍도 애니메이션으로 만들어 보겠습니다.
<div className="App">
<button onClick={() => setShow((prevState) => !prevState)}>
Click me
</button>
{transitions?.map(
({ item, key, props }) =>
item && (
<animated.div
key={key}
style={{ opacity: props.opacity }}
className="overlay"
>
<animated.div style={{ width: props.width }} className="drawer">
Hey look it's a side drawer!
</animated.div>
</animated.div>
)
)}
</div>
오버레이와 마찬가지로 애니메이션 div를 만들고 useTransition에서 너비를 전달합니다.
남은 일은 우수한 사용자 경험을 위해 오버레이를 클릭할 때 오버레이를 닫는 것입니다.
<animated.div style={{ width: props.width }} className="drawer">
Hey look it's a side drawer!
</animated.div>
<div className="fill" onClick={() => setShow(false)} />
측면 서랍 div 바로 옆에 클릭 이벤트를 처리하는 div를 배치합니다.
이것으로 끝났습니다!
코드의 작업 예는 다음과 같습니다.
읽어 주셔서 감사합니다. 이 글에서 뭔가를 배웠기를 바랍니다. 측면 서랍을 구현하는 데 선호하는 방법이 있습니까?
2021년 7월 23일 https://relatablecode.com에서 원래 게시되었습니다.
Reference
이 문제에 관하여(React-spring으로 멋진 측면 서랍을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/diballesteros/how-to-create-a-stunning-side-drawer-with-react-spring-bja텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)