JSX란?
우선 JSX의 가장 기본적인 변수를 선언해 보았다.
const element = <h1>Hi, Kim</h1>;
변수 element에 문자열도 HTML도 아닌 문법을 담아주었다.
이런 코드를 JSX라고하며, JavaScript를 확장한 문법을 뜻한다. JSX는 자바스크립트의 모든 기능이 포함되어있고, 필수적인것은 아니지만 자바스크립트코드 안에서 UI관련 작업을 할 때 시각적으로 더 도움이 된다고 생각되는 문법이다.
JSX문법
JSX의 문법은 다음과 같은 규칙을 가진다 반드시 태그를 열었으면 닫아줘야하며, 하나의 태그안에 담아줘야한다.
render() { X render() { O
return( return(
<div> <div>
</div> <div>
<div> </div>
</div> </div>
); );
} }
Error
이렇게 작성하게 될 경우 반드시 오류를 발생시킨다.
아래는 기본적인 문법이다.
const name = "Josh Perez";
const element = <h1>Hi, {name}</h1>;
위의 코드와 같이 중괄호 안에는 JS 표현식을 넣을 수 있다.
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Abc',
lastName: 'Def'
};
const element = (
<h1>
Hi, {formatName(user)}!
</h1>
)
ReactDOM.render(
element,
document.getElementById('root')
);
//ReactDOM이 다른 js파일에 가있을경우
export default element;
JSX 객체 표현
두 예시는 동일하다.
const element = (
<h1 className="testCase1">
I'M Test Code!!!!!
</h1>
)
또는 React.createElement()을 사용한 코드와 사용하지 않았을때 표현되는 코드를 작성해보았다.
const element = React.createElement(
'h1'
{className: "testCase1" },
`i'am Test Code!!!!!`
);
//위 코드는 아래의 코드를 단순화한 코드이다.
const element = {
type: 'h1',
props: {
className: 'testCase1'
children: 'i'am Test Code!!!!!'
}
};
JSX안에서 자바스크립트 값 사용하기
JSX내부에 자바스크립트 변수를 보여줘야 할 때에는 중괄호( { } )로 감싸서 작성한다.
import React from 'react';
function App() {
const name = 'Mouse';
return (
<div>
<span>{name}</span>
</div>
)
}
JSX에 Css및 이름표 붙이기
import React from 'react';
function App() {
const name = 'Mouse';
const style = {
backgroundColor: 'black',
color: 'green',
font-weight: 'bolder',
padding: '1em',
}
return (
<div className="test">
<span style ={style}>{name}</span>
</div>
)
}
아니면 다음과 같이 설정할 수 있다.
import React from 'react';
import './App.css'
function App() {
const name = 'Mouse';
return (
<div className="test">
<span style ={style}>{name}</span>
<input
id="btn"
type="submit"
value="누르기"
/>
</div>
)
}
'FE BE 개발 메모장 > React' 카테고리의 다른 글
생명주기(Life-Cycle) 1차 (0) | 2021.02.28 |
---|---|
REACT 데이터의 흐름과 사고 (0) | 2021.02.16 |
State와 Props에 대해서 (0) | 2021.02.13 |
컴포넌트(Component)란?(좀더 이해하기 쉽게 수정해야함) (0) | 2021.02.13 |
React, React를 시작하기 (0) | 2021.02.10 |