[React] CustomHook πŸ‘‰ useTabs

μŠΉλ―Έλ‹ˆΒ·2021λ…„ 7μ›” 10일
0

React

λͺ©λ‘ 보기
8/10

https://nomadcoders.co μ—μ„œ κ°•μ˜λ₯Ό λ“£κ³  μ •λ¦¬ν•œ λ‚΄μš© μž…λ‹ˆλ‹€.

1. useTabs μ΄λž€

  • button tab 이라고 μƒκ°ν•˜λ©΄ λœλ‹€!

2. useTabs μž‘μ„±ν•˜κΈ°

const useTabs = (initialTab, allTabs) => {
  const [currentIndex, setCurrentIndex] = useState(initialTab);

  // function μ‹œμž‘ν•  λ•Œ μ—λŸ¬ 확인
  if (!allTabs || !Array.isArray(allTabs)) {
    return;
  }

  // index
  return {
    currentItem: allTabs[currentIndex],
    changeItem: setCurrentIndex
  }
}

3. useTabs μ‚¬μš©ν•˜κΈ°

  • λ¨Όμ € κ°€μ Έμ˜¬ 데이터λ₯Ό λ§Œλ“€μ–΄μ€€λ‹€.
    • apiλ₯Ό κ°€μ Έμ˜€λŠ” λ“±μœΌλ‘œ ν™œμš©ν•  수 μžˆλ‹€!
const content = [
  {
    tab: "section 1",
    content: "section1의 content"
  },

  {
    tab: "section 2",
    content: "section2의 content"
  },

  {
    tab: "section 3",
    content: "section3의 content"
  }
]
  • 데이터 보여주기
const App = () => {
  const {currentItem, changeItem} = useTabs(0, content);

  return (
    <div className="app">
      <div>
        {content.map((section, index) =>
          <button onClick={() => changeItem(index)}> {section.tab} </button>
        )}
      </div>
      <div> {currentItem.content} </div>
    </div>
  ) 
}

4. μ—λŸ¬ λ°œμƒ..


Each child in a list should have a unique "key" prop.
이와 같은 μ—λŸ¬κ°€ λ°œμƒκ°€ λ°œμƒν–ˆλ‹€.
key 값이 μ—†μ–΄μ„œ μ—λŸ¬κ°€ λ°œμƒν–ˆλ˜ 것...

<button onClick={() => changeItem(index)} key={index}> {section.tab} </button>

key={index} λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•΄κ²°ν–ˆλ‹€!!!

profile
Web Frontend Developer

0개의 λŒ“κΈ€