๊ฐœ๋ฐœ ๐Ÿพ/ReactJS

React์—์„œ ๊ฐ€๋กœ ์Šคํฌ๋กค ๊ตฌํ˜„ํ•˜๊ธฐ (react-horizontal-scrolling-menu)

JOTOKKI 2021. 6. 3. 18:40
728x90

๋ฆฌ์•กํŠธ์—์„œ ๋งˆ์šฐ์Šค ํœ ๋กœ ๊ฐ€๋กœ ์Šคํฌ๋กค์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ๋งŒ๋“ค์–ด๋„ ๋˜์ง€๋งŒ, 

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. ๊ฒฐ๊ณผ

๋งˆ์šฐ์Šค ์Šคํฌ๋กค์„ ๋‚ด๋ ธ์„ ๋•Œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ž˜ ์Šคํฌ๋กค๋ฉ๋‹ˆ๋‹ค. 

 

์ด์™ธ์— ๋‹ค์–‘ํ•œ ์˜ต์…˜๋“ค์ด ์žˆ์œผ๋‹ˆ ์‚ฌ์ดํŠธ ๊ฐ€์„œ ํ™•์ธํ•ด ๋ณด์„ธ์š”~ ๐Ÿ˜€

๋ฐ˜์‘ํ˜•