230106 React function, component

2023. 1. 6. 12:40·Skills/React

Multi-element

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React_Syntax</title>
</head>
<body>
  <nav class="gnb">
    <!--
    <ul class="gnb_ul">
      <li>로그인</li>
      <li>회원가입</li>
      <li>사이트맵</li>
    </ul>
    -->
  </nav>

  <div class="logo">
    <!-- <div class="logo_txt">Front_End</div> -->
  </div>

  <ul class="lnb">
  <!--
    <li class="html">HTML5</li>
    <li>CSS3</li>
    <li>jQuery</li>
    <li>JavaScript</li>
    <li>React</li>
  -->
  </ul>

  <!-- React_CDN -->
  <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>

  <!-- BABEL -->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

  <!-- custom script -->
  <script type="text/babel">
    const rootGnb = document.querySelector('.gnb')
    const rootLogo = document.querySelector('.logo')
    const rootLnb = document.querySelector('.lnb')

    const gnbElement = (
      <ul
        className = 'gnb_ul'
        children = {[
          <li>로그인</li>,
          <li>회원가입</li>,
          <li>사이트맵</li>
        ]}
      />
    )

    const logoElement = <div className="logo_txt" children="Front_End" />

    const lnbElement = (
      <>
          <li className='html'>HTML5</li>
          <li>CSS3</li>
          <li>jQuery</li>
          <li>JavaScript</li>
          <li>React</li>
      </>
    )  

    ReactDOM.render(gnbElement, rootGnb)
    ReactDOM.render(logoElement, rootLogo)
    ReactDOM.render(lnbElement, rootLnb)
  </script>
</body>
</html>

 

Multi-element Test

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React_Syntax</title>
</head>
<body>
  <div id="root"></div>

  <!-- React_CDN -->
  <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>

  <!-- BABEL -->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

  <!-- custom script -->
  <script type="text/babel">
    const rootElement = document.querySelector('#root')

    const nodeElement = (
      <>
        <nav className="gnb">
          <ul className='gnb_ul'>
            <li>로그인</li>
            <li>회원가입</li>
            <li>사이트맵</li>
          </ul>
        </nav>

        <div className='logo'>
          <div className='logo_txt'>Front_End</div>
        </div>

        <ul className='lnb'>
          <li className='html'>HTML5</li>
          <li>CSS3</li>
          <li>jQuery</li>
          <li>JavaScript</li>
          <li>React</li>
        </ul>
      </>
    )  

    ReactDOM.render(nodeElement, rootElement)
  </script>
</body>
</html>

 

Function-component

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React_Syntax</title>
</head>
<body>
  <div id="root"></div>

  <!-- React_CDN -->
  <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>

  <!-- BABEL -->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

  <!-- custom script -->
  <script type="text/babel">
    /******** function component ********/
    const rootElement = document.getElementById('root')

    function MyComponent(props) { // component = 내가 만드는 거, 속성(레이아웃) 뿐 아니라 기능도 넣을 수 있음.
      return ( // return으로 돌릴 수 있는 값은 하나. 여러 개를 돌리려면 React.Fragment 사용.
        <div>
          안녕하세요, <br />
          지금 배우는 과목은 {props.subject} 입니다.
        </div>
      )
    }

    /*
    const element = (
      <MyComponent subject='React' />
    )
    */

    /*
    const element = (
      <>
        <MyComponent subject='React' />
        <MyComponent subject='HTML5' />
        <MyComponent subject='CSS3' />
        <MyComponent subject='JavaScript' />
      </>
    )
    */

    MyComponent.defaultProps = { // 여러 개의 객체가 들어올 수 있음.
      subject: 'HTML5 & CSS3'
    }

    // ReactDOM.render(element, rootElement)
    // ReactDOM.render(<MyComponent subject='React' />, rootElement)
    ReactDOM.render(<MyComponent />, rootElement)
  </script>
</body>
</html>

 

비구조화 할당

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React_Syntax</title>
</head>
<body>
  <div id="root"></div>

  <!-- React_CDN -->
  <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>

  <!-- BABEL -->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

  <!-- custom script -->
  <script type="text/babel">
    /******** function component ********/
    const rootElement = document.getElementById('root')



    // function component 기본
    /*
    const EnglishWord = function() {
      return (
        <>
          <h3>Good</h3>
          <span>좋은</span>
        </>
      )
    }

    const element = (
      <>
        {EnglishWord()}
      </>
    )
    */


    // 비할당 방식의 익명함수
    // 방법1.
    /*
    const EnglishWord = function(word, mean) {
      return (
        <>
          <h3>{word}</h3>
          <span>{mean}</span>
        </>
      )
    }

    const element = ( // 함수로 호출
      <>
        {EnglishWord('Good', '좋은')}
        {EnglishWord('Bad', '나쁜')}
        {EnglishWord('Happy', '행복한')}
      </>
    )
    */


    // 방법1.의 간소화1. (화살표 함수 사용)
    /*
    const EnglishWord = (word, mean) => {
      return (
        <>
          <h3>{word}</h3>
          <span>{mean}</span>
        </>
      )
    }

    const element = (
      <>
        {EnglishWord('Good', '좋은')}
        {EnglishWord('Bad', '나쁜')}
        {EnglishWord('Happy', '행복한')}
      </>
    )
    */


    // 방법1.의 간소화2. (return 삭제하고 () 사용)
    /*
    const EnglishWord = (word, mean) => (
      <>
        <h3>{word}</h3>
        <span>{mean}</span>
      </>  
    )

    const element = (
      <>
        {EnglishWord('Good', '좋은')}
        {EnglishWord('Bad', '나쁜')}
        {EnglishWord('Happy', '행복한')}
      </>
    )
    */


    // 방법2.
    /*
    const EnglishWord = function(props) {
      return (
        <>
          <h3>{props.word}</h3>
          <span>{props.mean}</span>
        </>
      )
    }

    const element = ( // 함수로 호출하지 않고 component 사용★
      <>
        <EnglishWord word='Good' mean='좋은' />
        <EnglishWord word='Bad' mean='나쁜' />
        <EnglishWord word='Happy' mean='행복한' />
      </>
    )
    */
    

    // 위 방법 섞어서도 가능. 방법은 여러가지임. 사용하기 나름.
    /*
    const EnglishWord = ({word, mean}) => ( // 속성쓰기 때문에 {}!!
      <>
        <h3>{word}</h3>
        <span>{mean}</span>
      </>
    )

    const element = (
      <>
        <EnglishWord word='Good' mean='좋은' />
        <EnglishWord word='Bad' mean='나쁜' />
        <EnglishWord word='Happy' mean='행복한' />
      </>
    )
    */


    // 비할당 방식. HOOK
    const EnglishWord = props => {
      const {word, mean} = props
      return (
        <>
          <h3>{word}</h3>
          <span>{mean}</span>
        </>
      )
    }

    const element = (
      <>
        <EnglishWord word='Good' mean='좋은' />
        <EnglishWord word='Bad' mean='나쁜' />
        <EnglishWord word='Happy' mean='행복한' />
      </>
    )



    ReactDOM.render(element, rootElement)
  </script>
</body>
</html>

 

Function-component 비구조화 할당 Test

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React_Syntax</title>
</head>
<body>
  <div class="title">
    <!-- 발표회 -->
  </div>

  <div class="list">
    <!-- custom function -->
  </div>


  <!-- React_CDN -->
  <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>

  <!-- BABEL -->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

  <!-- custom script -->
  <script type="text/babel">
    const titleElement = document.querySelector('.title')
    titleElement.style.color = 'blue'
    titleElement.style.textAlign = 'center'

    const classElement = (
      <>
        <h2 children = '발표회' />
        <hr />
      </>
    )

    ReactDOM.render(classElement, titleElement)



    const listElement = document.querySelector('.list')
    listElement.style.listStyle = 'inside'
    
    const GroupPlay = ({group, play}) => {
      return (
        <>   
          <li>{group}</li>
          <li>{play}</li>
        </>
      )
    }

    const groupElement = (
      <>
        <ul>참가자 순서
          <li>햇님반</li>
          <li>별님반</li>
          <li>달님반</li>
          <li>꽃님반</li>
        </ul>
        
        <ul>발표회 내용
          <GroupPlay group='햇님반 주제' play='노래 합창' />
          <GroupPlay group='별님반 주제' play='민속 무용' />
          <GroupPlay group='달님반 주제' play='에어로빅' />
          <GroupPlay group='꽃님반 주제' play='단체 합주' />
        </ul>
      </>
    )
    
    /*
    참가자 순서
    햇님반
    별님반
    달님반
    꽃님반

    햇님반 주제
    노래 합창
    별님반 주제
    민속 무용
    달님반 주제
    에어로빅
    꽃님반 주제
    단체 합주
    */

    ReactDOM.render(groupElement, listElement)
  </script>
</body>
</html>

 

Component

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React_Syntax</title>
</head>
<body>
  <div id="root"></div>

  <!-- React_CDN -->
  <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>

  <!-- BABEL -->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

  <!-- custom script -->
  <script type="text/babel">
    const rootElement = document.getElementById('root')


    const Greet = ({first, second, children}) => (
      <>
        <h1>{first}</h1>
        <h1>{second}</h1>
        {children}
      </>
    )

    // 방법1.
    /*
    const element = (
      <>
        <Greet first='Good' second='Mornig~'>Hi!</Greet>

        <Greet first='Bad' second='Afternoon!'>
          <span>Hello</span>
        </Greet>

        <Greet first='Happy' second='Evening~'>
          <div>night</div>
          <div>night</div>
          <div>night</div>
          <div>night</div>
          <div>night</div>
        </Greet>

        <Greet first='Deep' second='Sleeping...'>
          <Greet first='Dream' second='World' />
        </Greet>
      </>
    )
    */

    // 방법2.
    /*
    const element = (
      <>
        <Greet first='Good' second='Morning~'>
          {Greet({first: 'Bad', second: 'Afternoon', children: 'Happy'})}
        </Greet>
      </>
    )
    */

    // 방법3.
    const Good = () => <h3 className='good'>Good</h3>

    const element = (
      <>
        <Greet first='Good' second='Morning~'>
          <Good />
          <Good />
          <Good />
          <Good />
          <Good />
        </Greet>
      </>
    )

    
    ReactDOM.render(element, rootElement)
  </script>
</body>
</html>

 

Component Test

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React_Syntax</title>
</head>
<body>
  <div id="root"></div>

  <!-- React_CDN -->
  <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>

  <!-- BABEL -->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

  <!-- custom script -->
  <script type="text/babel">
    const rootElement = document.getElementById('root')

    const classElement = (
      <>
        <h2 children = '발표회' />
        <hr />
      </>
    )

    const Play = ({classElement, group, list}) => (
      <>
        {classElement}
        <li>{group}</li>
        <li>{list}</li>
      </>
    )

    const element = (
      <>
        <ul>참가자 순서
          <li>햇님반</li>
          <li>별님반</li>
          <li>달님반</li>
          <li>꽃님반</li>
        </ul>
        
        <ul>발표회 내용
          <Play group='햇님반 주제' list='노래 합창' />
          <Play group='별님반 주제' list='민속 무용' />
          <Play group='달님반 주제' list='에어로빅' />
          <Play group='꽃님반 주제' list='단체 합주' />
        </ul>
      </>
    )

    ReactDOM.render(element, rootElement)
  </script>
</body>
</html>

'Skills > React' 카테고리의 다른 글

230112 React project  (0) 2023.01.12
230112 React useEffect, useReduser  (1) 2023.01.12
230106 React Props, 비구조화 할당(구조분해 할당)  (1) 2023.01.06
230105 React syntax 실전  (2) 2023.01.05
230105 React syntax  (0) 2023.01.05
'Skills/React' 카테고리의 다른 글
  • 230112 React project
  • 230112 React useEffect, useReduser
  • 230106 React Props, 비구조화 할당(구조분해 할당)
  • 230105 React syntax 실전
개발자 윤구나
개발자 윤구나
개발 공부를 하고 있습니다. Let's go!
  • 개발자 윤구나
    이것은 무엇?????
    개발자 윤구나
    • 분류 전체보기
      • Skills
        • Java
        • Database
        • Flutter, Dart
        • JavaScript
        • React
        • HTML5
        • CSS3, SCSS
        • PHP
        • C#
        • Unity
        • Algorithm
        • GIT·GitHub
        • 그 외
      • Book Review
      • IT NEWS
      • 설계
      • 자기 계발
  • 블로그 메뉴

    • 홈
    • 방명록
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.3
개발자 윤구나
230106 React function, component
상단으로

티스토리툴바