Delay
์ด ์ปดํฌ๋ํธ๋ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- children์ delay๋ฅผ ์ ์ฉํ์ฌ ๋ ธ์ถ ์์ ์ ์ง์ฐ์ํค๊ฑฐ๋,
- children์ด render prop์ผ ๊ฒฝ์ฐ delay๋ ์์ ์ ํ๋๊ทธ๋ฅผ ์ ๋ฌํฉ๋๋ค.
props.ms
1. children์ด ๋ ธ์ถ๋๋ ์์ ์ ์ง์ฐ
์ด ์ปดํฌ๋ํธ๋ children์ด ๋ ธ์ถ๋๋ ์์ ์ ms๋งํผ ์ง์ฐ์ํต๋๋ค. ์๋์ ๊ฐ์ ์ฝ๋์์๋ 200ms๋งํผ children ๋ ธ์ถ์ด ์ง์ฐ๋ฉ๋๋ค.
import { Delay } from '@suspensive/react'
export const Example = () => {
return (
<Delay ms={200}>
<Delayed />
</Delay>
)
}
2. children์ ์ง์ฐ๋ ํ๋๊ทธ๋ฅผ ์ ๋ฌํ๊ธฐ
children์ด render prop์ด๋ผ๋ฉด ๋
ธ์ถ์ ์ ์ดํ์ง ์๊ณ ํ๋๊ทธ๋ฅผ ์ ๋ฌํฉ๋๋ค. ์๋์ ๊ฐ์ ์ฝ๋์์๋ 200ms ๋ค์ isDelayed
๊ฐ true๋ก ์ ๋ฌ๋ฉ๋๋ค.
import { Delay } from '@suspensive/react'
export const Example = () => {
return (
<Delay ms={200}>
{({ isDelayed }) => (
<div
style={{
opacity: isDelayed ? 1 : 0,,
transition: 'opacity 1500ms',
}}
></div>
)}
</Delay>
)
}
๋ก๋ฉ UI๊ฐ ์ง์ฐ๋์ด ๋ ธ์ถ๋๋ ๊ฒ์ด ๋์ ๋ฐ๋ผ ๋ ์ข์ ์ฌ์ฉ์ฑ์ ์ ๊ณตํฉ๋๋ค.
import { Delay, Suspense } from '@suspensive/react'
const Example = () => (
<Suspense
fallback={
<Delay ms={200}>
<Skeleton />
</Delay>
}
>
...
</Suspense>
)
Default ms
<Delay/>
๋ <DefaultPropsProvider/>
์ ํจ๊ป ์ฌ์ฉํ ๋ ๋์ฑ ๊ฐ๋ ฅํด์ง๋๋ค. <DefaultPropsProvider/>
๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ <Delay/>
default ms๋ฅผ ์ ์ดํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ <DefaultPropsProvider/>
ํ์ด์ง์ ์๊ฐ๋์ด ์์ต๋๋ค.
props.fallback
delay๋ children ๋ ธ์ถ ์ ๊น์ง ๋ณด์ฌ์ค ์ ์๋ fallback์ ๋๋ค.
import { Delay } from '@suspensive/react'
const Example = () => (
<Delay ms={200} fallback={<>Fallback Text</>}>
200ms delayed Text
</Delay>
)
Delay.with
Delay.with
๋ Delay
๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๋ํํ๋ HOC์
๋๋ค.
Delay.with
๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ์ฝ๊ฒ ๋ํํ ์ ์์ต๋๋ค.
import { Delay } from '@suspensive/react'
const Example = Delay.with({ ms: 2000 }, () => {
return <>...</>
})