beecomci / today_i_learned

0 stars 0 forks source link

[React-Basic-Hooks] 3. JSX(React Element) 이해 #7

Open beecomci opened 3 years ago

beecomci commented 3 years ago

JSX(React Element) 이해

const hello = <h1 className='greeting'>Hello World!</h1>;
var hello = React.createElement(
  'h1',
  { className: 'greeting' },
  'Hello World!'
);

태그 규칙

표현식 사용

attribute

function formatName(user) {
  return user.firstName + ' ' + user.lastName;
}

const user = {
  firstName: 'Harper',
  lastName: 'Perez'
};

const element = (
  <h1>
    Hello, {formatName(user)}! // js 사용하는 곳은 {} 사용
  </h1>
);

ReactDOM.render(
  element,
  document.getElementById('root')
);

주의 사항

beecomci commented 3 years ago

props.children

opening & closing 태그를 가진 JSX 표현식에서 props.children 이라는 특별한 props를 가짐 props.children은 일반적으로 태그 자체가 아닌 JSX 표현식의 하위 태그에 의해 정의됨 opening & closing 태그 사이에 오로지 문자열만 존재한다면 props.children은 그저 문자열 #Children in JSX

<MyComponent>Hello World</MyComponent>
beecomci commented 3 years ago

XSS (corss-site-scripting)

<p>{'<script>alert(1);</script>'}</p>

// HTML attributes 렌더링시에는 XSS Protection X
<form action={data}> ... 

dangerouslySetInnerHTML

function createMarkup() {
  return {__html: 'First &middot; Second'};
}

function MyComponent() {
  return <div dangerouslySetInnerHTML={createMarkup()} />;
}