JSX 없이 사용하는 React
React는 자바스크립트 라이브러리로 JSX 를 사용하지 않아도 모든 것을 자바스크립트로 구현할수 있다.
그러나 리액트를 사용하면서 자바스크립트보다 JSX를 선호하는 이유는,
기존에 자바스크립트로 구현할수 있음에도 JQuery를 많이 사용했던 이유 중 하나,
자바스크립트로 작성된 코드가 JSX로 작성한 코드보다 길고 복잡하기 때문이다.
/* JSX */
class Hello extends React.Component {
render() {
return <div>Hello {this.props.toWhat}</div>;
}
}
ReactDOM.render(
<Hello toWhat="World" />,
document.getElementById('root')
);
/* JAVASCRIPT */
class Hello extends React.Component {
render() {
return React.createElement('div', null, `Hello ${this.props.toWhat}`);
}
}
ReactDOM.render(
React.createElement(Hello, {toWhat: 'World'}, null),
document.getElementById('root')
);
JSX 알아보기
- JSX는 자바스크립트를 확장한 문법이다.
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Harper',
lastName: 'Perez'
};
const element = (
<h1>
Hello, {formatName(user)}!
</h1>
);
ReactDOM.render(
element,
document.getElementById('root')
);
- JSX의 중괄호 안에 유효한 모든 Javascript 표현식을 넣을 수 있다.
JSX도 표현식이기 때문에 컴파일이 끝나면 JSX 표현식이 Javascript 함수를 호출하고 javascript 객체로 인식되기 때문이다.
(즉, 변수, 파라미터, 반환값 등으로 사용가능하다)
- JSX는 HTML의 형식을 띄고 있어 Attribute를 가지고 있다.
Attribute에 값을 넣을때 따옴표(문자열 리터럴)를 이용해서 리터럴을 직접 입력하거나
중괄호를 사용해서 javascript 표현식을 넣어 간접적으로 값을 넣을 수 있다.
둘은 다른 형식이기 때문에 하나의 Attribute에 동시 사용은 불가능하다.
- JSX는 html보다 javascript에 가깝기 때문에 attribute를 명명할때 camelCase 명명 규칙을 사용한다.
- JSX는 XSS 공격을 방지한다(보안)
ReactDOM에서 JSX에 삽입된 모든 값을 렌더링하기 전에 이스케이프하여 모든 항목은 렌더링 전에 문자열로 변환된다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는React의모든것초격차패키지Online.
'ETC > 패캠환급챌린지(리액트)' 카테고리의 다른 글
패스트캠퍼스 챌린지 9일차 - 리액트 컴포넌트 생명주기 (0) | 2021.11.09 |
---|---|
패스트캠퍼스 챌린지 8일차 - 리액트 Props, State (0) | 2021.11.08 |
패스트캠퍼스 챌린지 6일차 - 리액트 상태 끌어올리기, 데이터 fetch하기 (0) | 2021.11.06 |
패스트캠퍼스 챌린지 5일차 - 리액트 Key와 리렌더링 (0) | 2021.11.05 |
패스트캠퍼스 챌린지 4일차 - 리액트 element 다루기 (0) | 2021.11.04 |