Develop/React

(React & Express 를 이용한 웹 어플리케이션 개발하기) 2일자 - map

자라선 2021. 1. 5. 00:31

 

   // Contact 템플릿
   class ContactInfo extends React.Component{
     render(){
       return(
         <div> {/* props의 오브젝트 값을 사용한다.*/}
              {this.props.contact.name} {this.props.contact.phone}
          </div>
       );
     }
   }
   
   // Contact 데이터 생성
   class Contact extends React.Component{
     
     constructor(props){
       super(props);

       // state.contactData 배열 선언
       this.state = {
         contactData:[
           {name:'Abet', phone:'010-0000-0001'},
           {name:'Betty', phone:'010-0000-0002'},
           {name:'Charlie', phone:'010-0000-0003'},
           {name:'David', phone:'010-0000-0004'}
         ]
       }
     }

     
     render(){
          // ES6의 애로우 문법
          const mapToComponent = (data) => {

               // map 메소드는 내부의 콜백함수로 새로운 배열로 만들어낸다.
               // map 메소드 contact = currentValue, i = index, array = 배열
               return data.map((contact, i, array) => {
                    // {name:'Abet', phone:'010-0000-0001'} ...
                    return (<ContactInfo contact={contact} key={i}/>);
               })
          };
          
          return(
               <div>
                    { 
                         /* mapToComponent에 배열 파라미터를 주입하여 새로운 배열을 만들어낸다. */
                         mapToComponent(this.state.contactData)
                    }
               </div>
          );
     }
   }
   
   class App extends React.Component{
     render(){
       return(
         <Contact/>
       );
     }
   };
   
   // 실제 페이지에 JSX 코드를 렌더링 하기 위해 사용됨
   ReactDOM.render(<App/>, document.getElementById('root'));

Component를 사용하여 JSX 코드를 자동생성하여 렌더링한다.

이 코드는 템플릿과 같은 Component를 만들어 props 값만 사용하도록 하고

템플릿을 사용하는 Component에 값만 주입하여 JSX코드를 생성하도록 해준다.

 

JS의 map 메소드를 사용하면 해당 배열을 함수 인자로 받아 새로운 배열로 반환하여 생성된다.