์์ํ๊ธฐ
์ค์น
# pnpm (๊ถ์ฅ)
pnpm add @frontend-toolkit-js/hooks @frontend-toolkit-js/components
# npm
npm install @frontend-toolkit-js/hooks @frontend-toolkit-js/components
# yarn
yarn add @frontend-toolkit-js/hooks @frontend-toolkit-js/componentsํ์ํ ํจํค์ง๋ง ๊ฐ๋ณ ์ค์น๋ ๊ฐ๋ฅํฉ๋๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
Hooks
import { useDebounce } from '@frontend-toolkit-js/hooks';
function SearchInput() {
const [value, setValue] = useState('');
const debouncedValue = useDebounce(value, 300);
useEffect(() => {
if (debouncedValue) {
fetchResults(debouncedValue);
}
}, [debouncedValue]);
return <input value={value} onChange={e => setValue(e.target.value)} />;
}Components
import { InViewTrigger } from '@frontend-toolkit-js/components';
function LazySection() {
return (
<InViewTrigger onInView={() => console.log('ํ๋ฉด์ ๋ณด์!')}>
<div>๋ด์ฉ</div>
</InViewTrigger>
);
}TypeScript
๋ชจ๋ ํจํค์ง๋ TypeScript๋ก ์์ฑ๋์์ผ๋ฉฐ ํ์ ์ด ์๋ ์ถ๋ก ๋ฉ๋๋ค.
const debouncedValue = useDebounce(searchTerm, 300);
// ^? string - ํ์
๋ช
์ ๋ถํ์!๋ค์ ๋จ๊ณ
- Hooks - useDebounce, useCalendar ๋ฑ
- Components - InViewTrigger, SuspenseBoundary ๋ฑ