๋ฆฌ์กํธ์์ ๋ง์ฐ์ค ํ ๋ก ๊ฐ๋ก ์คํฌ๋กค์ ์ฌ์ฉํ๊ธฐ ์ํด ์ง์ ๋ง๋ค์ด๋ ๋์ง๋ง,
width๊ฐ ์ค์ ๋ถํฐ wheel๊ฐ๋ ๊ฐ์ ธ์์ผ ํ๊ณ ๋ง์ ๊ณต์๊ฐ ๋ค์ด๊ฐ๋๋ค.
๋คํํ ๊ฐ๋จํ๊ฒ ํ์ฉํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ด์ ๊ณต์ ์ฌ์ดํธ์ ์์ ๋ฅผ ๊ฐ์ง๊ณ hook๋ฒ์ ์ผ๋ก ๊ตฌํํด ๋ณด์์ต๋๋ค.
URL : https://www.npmjs.com/package/react-horizontal-scrolling-menu
DEMO: https://codesandbox.io/s/lpjol1opmq
1. ์ค์น
npm install --save react-horizontal-scrolling-menu
2. ์ ์ฉํ๊ธฐ
์ ๋ ํ์ํ ๋ถ๋ถ๋ง ์ ์ฉํ๊ณ ์ถ์ด ์ก๋คํ ๊ธฐ๋ฅ์ ๋ฐฐ์ ํ๊ณ ์์ฃผ ์ฌํํ๊ฒ ๋ง์ฐ์ค ํ ์คํฌ๋กค๋ง ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค.
์ฌ์ฉํ ๋ฐ์ดํฐ๋ ์ฝ๋ ๋ธ๋ก์ ๋ฃ์ผ๋ ์๊พธ ์๋ฌ๊ฐ ๋๋ค์.
์์ ์ ๋์์๋ ๊ทธ๋๋ก
const list = [{name: 'item1'}, ..., {name: 'item25'}]
์ด๋ ๊ฒ ์ฌ์ฉํ์์ต๋๋ค.
import ScrollMenu from 'react-horizontal-scrolling-menu' // ScrollMenu ๊ฐ์ ธ์ค๊ธฐ
let list // ์์๋ฐ์ดํฐ ์ ์ธ
// Item ๋จ์์ ์ปดํฌ๋ํธ
const MenuItem = ({ text }) => {
return <div className="menu-item">{text}</div>;
};
// MenuItem๋ค์ list๋งํผ ์์ฑํ List๋จ์์ ์ปดํฌ๋ํธ
export const Menu = list => (
list.map(el => {
const { name } = el;
return <MenuItem text={name} key={name} />
})
);
function App() {
const [DataItem, setDataItem] = useState(null);
useEffect(() => {
setDataItem(Menu(list)); // Menu์ปดํฌ๋ํธ๋ฅผ state์ ์ ์ฅ
}, [])
return (
<div className="App">
<div className="wrap">
// ScrollMenu ์ปดํฌ๋ํธ๋ก ๊ฐ์ธ์ฃผ๋ฉด ๋ฉ๋๋ค.
{
DataItem &&
<ScrollMenu
data={DataItem}
wheel={true} // wheel ์ด false ๋ฉด ์๋ํ์ง ์์ต๋๋ค
/>
}
</div>
</div>
);
}
export default App;
๋์ ๋๋ค. ์์ฃผ ๊ฐ๋จํ๋ค์.
3. ๊ฒฐ๊ณผ
๋ง์ฐ์ค ์คํฌ๋กค์ ๋ด๋ ธ์ ๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ ์คํฌ๋กค๋ฉ๋๋ค.
์ด์ธ์ ๋ค์ํ ์ต์ ๋ค์ด ์์ผ๋ ์ฌ์ดํธ ๊ฐ์ ํ์ธํด ๋ณด์ธ์~ ๐
'๊ฐ๋ฐ ๐พ > ReactJS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React div ์คํฌ๋กค์ Fix ํ๊ธฐ (Element scroll) (0) | 2021.06.11 |
---|---|
React ์คํฌ๋กค์ Fix ํ๊ธฐ (Window scroll) (4) | 2021.06.08 |
[React][ํ๊ฒฝ์ธํ ] react-router-dom ์ฌ์ฉํ๊ธฐ (0) | 2021.05.25 |
[์๋ฌ๋ ธํธ] defaultState for reducer handling [object Object] should be defined (0) | 2021.03.17 |
React Hook ์์ Scroll ์ปจํธ๋กค ํ๊ธฐ! top๋ฒํผ ๊ตฌํ (1) | 2021.02.09 |