본문 바로가기
React.js

React.js Tab 메뉴 만들기. (Smart & Dummy component)

by 찬찬2 2020. 11. 9.

준비물

state(초기값), logic(함수 & setState), event, display(변화된 초기값)

 

컴포넌트 & props "Passing Data(값) and function" to child component

props를 통해 값(value)과 콜백함수를 자식 컴포넌트들에게 전달

1. App

2. TabNav

   - tab = (tabs={[ 'Home', 'Settings', 'Profile' ]} Mutable state value [ Design Result Data ]

   - selected={ this.state.selected } → 디스플레이를 위한 state가 변경된 값 [ Show Result Data ] 

   - setSelected={ this.setSelected }  콜백함수(logic)

3. Tab

   - isSelected={ this.state.selected === 'Home' }

   - isSelected={ this.state.selected === 'Settings' }

   - isSelected={ this.state.selected === 'Profile' }

   **조건문을 활용해 값들을 매칭하여 디스플레이를 해준다.

 

Key포인트

State : "selected: Home"

Logic : setSelected = ( tab ) => { this.setState({ selected: tab }) }

Input : tab (tabs={[ 'Home', 'Settings', 'Profile' ]}

Output : <TabNav>, <Tab>

    **<TabNav>에서 가르키는 this.props.children : <TabNav>감싸고 있는 <Tab>

    **<Tab>에서 가르키는 this.props.children : <Tab>감싸고 있는 p, h1, ul > li 요소(HTML markup)들

Event Trigger : onClick( )

 

<Tab>컴포넌트를 looping하면 안된다. <Tab>컴포넌트들은 각자 따로 작동해야 한다.

이유: this.props.children을 활용하기 위해서. <Tab>은 현재 <TabNav>안에 props의 형태로 되어 있다!! looping할 수 없음!!

 

render 흐름..

 

'React.js' 카테고리의 다른 글

TIP!!! Error message 모음  (0) 2020.11.12
Render Props  (0) 2020.11.10
(postCSS: css-module) classNames 여러개 지정하기 (라이브러리: classnames)  (0) 2020.11.02
Swiper  (0) 2020.11.02
[react-router nesting 연습]  (0) 2020.09.23

댓글