특별한 일상

[REACT] 리액트 JSX 태그 내부에 변수 넣기(React JSX in InnerTag) 본문

IT•개발 끄적/React

[REACT] 리액트 JSX 태그 내부에 변수 넣기(React JSX in InnerTag)

소다맛사탕 2021. 5. 13. 21:49
반응형

안녕하세요. 소다맛사탕 입니다.

리액트는 템플릿처럼 사용할 수 있는데 이번 포스팅에선 JSX 태그 내부에 변수를 넣는 방법에 대해 알아 보겠습니다.

 

JSX로 HTML 태그를 작성할 때 변수와 함수를 태그 내부에 사용할 수 있는데.

이를 테면... 이와 같습니다.

<tag> {value} </tag>

<tag attr={value}></tag>

function 작성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://unpkg.com/react@15/dist/react.min.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.min.js"></script>
<title>0513test1</title>
</head>
<body>
<div id="div01"></div>
<div id="div02"></div>
<!-- 
	HTML안에 리액트 문법을 쓸 수 있게
  	스크립트 정의 
-->
<script type="text/babel">
	const headStr = "안녕하세요?"
	const subStr = "반가워요"
	const subStr2 = 12345

	// HTML 태그 내부에 변수 값 넣기
	const msg = <h1>{headStr}</h1>
	const subMsg = <h2>{subStr} : {subStr2}</h2>
	
	// render()
	const elm01 = document.getElementById("div01")
	const elm02 = document.getElementById("div02")
	ReactDOM.render(msg, elm01)
	ReactDOM.render(subMsg, elm02)
</script>
</body>
</html>

HTML 태그 내부에 자유롭게 변수와 상수를 넣는 방법

리액트 JSX 테스트01


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://unpkg.com/react@15/dist/react.min.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.min.js"></script>
<title>0513test2</title>
</head>
<body>
<div id="div01"></div>
<!-- 
	HTML안에 리액트 문법을 쓸 수 있게
  	스크립트 정의 
-->
<script type="text/babel">
	const divVal = "안녕하세요?."
	const urlVal = "http://www.naver.com"

	// JSX 요소 정의
	const msg =
		<div>
			<h1>{divVal}</h1>
			<p><a href={urlVal}>네이버</a></p>
		</div>
	
	// render()
	const elm = document.getElementById("div01")
	ReactDOM.render(msg, elm)
</script>
</body>
</html>

JSX속성 값을 작성할 때는 큰따옴표가 아니라 중괄호를 사용하면 됩니다.

a태그 요소의 href에 url을 집어넣게 되면 해당 url로 이동하는걸 확인할 수 있습니다.


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://unpkg.com/react@15/dist/react.min.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.min.js"></script>
<title>0513test3</title>
</head>
<body>
<div id="div01"></div>
<!-- 
	HTML안에 리액트 문법을 쓸 수 있게
  	스크립트 정의 
-->
<script type="text/babel">
	// 리액트로 DOM 내용 변경
	ReactDOM.render(
		fncDom(),
		document.getElementById('div01')
	);
	
	// function 작성
	function fncDom() {
		return (
			<div>
				<h1>안녕하세요?</h1>
				<h2>function 테스트</h2>
			</div>
		)
	}
</script>
</body>
</html>

다음은 함수를 선언하여 HTML 내부를 변경하는법 입니다.

 

※ 주의 사항(JSX를 사용시 발생하는 오류)

// 오류1
function fncDom() {
	return 
		<div>
			<h1>안녕하세요?</h1>
			<h2>function 테스트</h2>
		</div>
}
// HTML 태그를 제대로 인식하지 못하는 오류.
// return을 소괄호로 감싸야 합니다.

// 오류2
function fncDom() {
	return (
		<div>
			<h1>안녕하세요?</h1>
			<h2>function 테스트</h2>
		</div>
		<div>
			<h1>안녕하세요?</h1>
			<h2>function 테스트</h2>
		</div>
	)
}
// 여러 개의 DOM 요소 생성시 오류.
// 한 return 안에 여러개의 div 요소를 생성시 오류.
// HTML 태그를 연속적으로 작성할 수 없습니다.

 

예시를 통해 HTML 태그 내부를 변경하는 방법에 대해 알아보았습니다.

더 자세한 내용과 방법은 다음 포스팅에서 다뤄 보겠습니다.

Comments