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 |