ReactJS로 원시 HTML 렌더링

Oluwafisayo Oluwatayo 2023년1월30일
  1. 온라인 HTML에서 JSX로 변환기
  2. 내장 ReactDOM.render() 메서드 사용
  3. dangerouslySetInnerHTML 메서드 사용
  4. 결론
ReactJS로 원시 HTML 렌더링

React 프레임워크의 다양성과 유연성은 아무리 강조해도 지나치지 않습니다. 사용자가 React 내부에서 HTML 코드를 렌더링할 수 있는 기능 덕분에 개발자가 되기 전에 React를 너무 깊이 배울 필요조차 없습니다.

HTML로 많은 코드를 작성했고 그것을 React로 가져오는 가장 빠른 방법을 찾고 있는 사람들을 위해 이 튜토리얼에서 이를 수행하는 다른 방법을 방문할 것입니다.

온라인 HTML에서 JSX로 변환기

이 방법은 영화와 노래를 다운로드하기 어려웠을 때 웹 사이트를 변환하는 온라인 미디어를 처음 발견했을 때의 추억을 불러옵니다.

웹사이트("https://transform.tools/html-to-jsx")는 순수 HTML 코드를 JSX(JavaScript Syntax Extension)로 변환하므로 반응 프레임워크 내에서 사용할 수 있습니다.

코드 조각 - App.js:

import logo from './logo.svg';
import './App.css';

function App() {
  return (
  <div className="App">
      <>
  <meta charSet="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <link rel="stylesheet" type="text/css" href="goog.css" />
  <title>Google</title>
  <header>
    <nav className="navi">
      <div id="left">
        <ul>
          <li>
            <a href="#">About</a>
          </li>
          <li>
            <a href="#">Stores</a>
          </li>
        </ul>
      </div>
      <div id="right">
        <ul>
          <li>
            <a href="#">Gmail</a>
          </li>
          <li>
            <a href="#">Images</a>
          </li>
          <li>
            <a href="#">Social</a>
          </li>
          <li>
            <button type="submit">Sign In</button>
          </li>
        </ul>
      </div>
    </nav>
  </header>
  <main id="content">
    <div className="google-logo">
      <img
        src="googlelogo_color_272x92dp.png"
        alt="google-logo"
        id="logo"
        width={272}
        height={92}
      />
    </div>
    <div id="search-bar">
      <input type="text" placeholder="Search or Type a URL" />
    </div>
    <div id="buttons">
      <button type="submit">Google Search</button>
      <button type="submit">I'm Feeling Lucky</button>
    </div>
  </main>
  <footer>
    <nav className="footer">
      <div id="left-foot">
        <ul>
          <li>
            <a href="#">Advertising</a>
          </li>
          <li>
            <a href="#">Business</a>
          </li>
          <li>
            <a href="#">How Search Works</a>
          </li>
        </ul>
      </div>
      <div id="right-foot">
        <ul>
          <li>
            <a href="#">Privacy</a>
          </li>
          <li>
            <a href="#">Terms</a>
          </li>
          <li>
            <a href="#">Settings</a>
          </li>
        </ul>
      </div>
    </nav>
  </footer>
</>
    </div>
  );
}
export default App;

.App div 내부에 코드를 래핑한 다음 여러 요소가 포함되어 있으므로 조각 안에 코드를 래핑합니다.

온라인 HTML에서 JSX로 변환기

내장 ReactDOM.render() 메서드 사용

이 방법을 사용하면 HTML 코드를 가장 순수한 형태로 사용할 수 있습니다. ReactDOm.render()를 사용하면 지정한 HTML 코드를 표시할 수 있습니다.

또한 ReactDOM.render()는 새 React 앱을 성공적으로 생성하면 사전 설치되므로 추가 종속성이 필요하지 않습니다. ReactDOM.remder()는 가벼운 반응 앱을 만드는 데 이상적인 방법입니다.

반응 프로젝트의 index.js 파일로 이동하여 const myelement를 선언합니다.

코드 조각 - index.js:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const myelement = (
  <>
<title>Google</title>
<body>
    <header>
        <nav class="navi">
            <div id="left">
                <ul>
                    <li><a href="#">About</a></li>
                    <li><a href="#">Stores</a></li>
                </ul>
            </div>

            <div id="right">
                <ul>
                    <li><a href="#">Gmail</a></li>
                    <li><a href="#">Images</a></li>
                    <li><a href="#">Social</a></li>
                    <li><button type="submit">Sign In</button></li>
                </ul>
            </div>
        </nav>
    </header>

    <main id="content">
        <div class="google-logo">
            <img src="googlelogo_color_272x92dp.png" alt="google-logo" id="logo" height="92" width="272"/>
        </div>

        <div id="search-bar">
            <input type="text" placeholder="Search or Type a URL"/>
        </div>

        <div id="buttons">
            <button type="submit">Google Search</button>
            <button type="submit">I'm Feeling Lucky</button>
        </div>
    </main>

    <footer>
        <nav class="foot">
            <div id="left-foot">
                <ul>
                    <li><a href="#">Advertising</a></li>
                    <li><a href="#">Business</a></li>
                    <li><a href="#">How Search Works</a></li>
                </ul>
            </div>

            <div id="right-foot">
                <ul>
                    <li><a href="#">Privacy</a></li>
                    <li><a href="#">Terms</a></li>
                    <li><a href="#">Settings</a></li>
                </ul>
            </div>
        </nav>
    </footer>
</body>
</>
);
ReactDOM.render(myelement, document.getElementById('root'));

요소를 선언한 후에는 ReactDOM.render() 내부에 요소를 추가하고 코드를 조각 태그로 래핑해야 합니다.

내장된 ReactDOM.render() 메서드 사용

dangerouslySetInnerHTML 메서드 사용

이것은 반응 프레임워크에서 원시 상태로 HTML을 렌더링하는 가장 널리 사용되는 방법입니다. 이 방법은 이 방법의 보안 취약성을 사용자에게 경고합니다.

dangerouslySetInnerHTML 방법을 사용하면 공격자가 양식 제출 웹 사이트 검색에서 보낸 데이터 내부에 악성 스크립트를 저장할 수 있습니다.

코드 조각 - App.js:

import logo from './logo.svg';
import './App.css';

const App = () => {
  const data =
    <body>
     <header>
        <nav class="navi">
            <div id="left">
                <ul>
                    <li><a href="#">About</a></li>
                    <li><a href="#">Stores</a></li>
                </ul>
            </div>
            <div id="right">
                <ul>
                    <li><a href="#">Gmail</a></li>
                    <li><a href="#">Images</a></li>
                    <li><a href="#">Social</a></li>
                    <li><button type="submit">Sign In</button></li>
                </ul>
            </div>
        </nav>
    </header>
    <main id="content">
        <div class="google-logo">
            <img src="googlelogo_color_272x92dp.png" alt="google-logo" id="logo" height="92" width="272">
        </div>
        <div id="search-bar">
            <input type="text" placeholder="Search or Type a URL">
        </div>
        <div id="buttons">
            <button type="submit">Google Search</button>
            <button type="submit">I'm Feeling Lucky</button>
        </div>
    </main>
    <footer>
        <nav class="foot">
            <div id="left-foot">
                <ul>
                    <li><a href="#">Advertising</a></li>
                    <li><a href="#">Business</a></li>
                    <li><a href="#">How Search Works</a></li>
                </ul>
            </div>
            <div id="right-foot">
                <ul>
                    <li><a href="#">Privacy</a></li>
                    <li><a href="#">Terms</a></li>
                    <li><a href="#">Settings</a></li>
                </ul>
            </div>
        </nav>
    </footer>
</body>
;
  return (
    <div
      dangerouslySetInnerHTML={{ __html: data }}
    />
  );
}
export default App;

먼저 const를 사용하여 구성 요소를 선언한 다음 백틱 안에 HTML 코드를 래핑합니다. 그런 다음 dangerouslySetInnerHTML을 선언하고 data 구성 요소를 중괄호 안에 래핑합니다.

위험하게SetInnerHTML 메소드 사용

결론

이 방법은 엄격한 과정을 거치지 않고도 React에 익숙해지는 흥미진진한 경로를 만듭니다. 그러나 이러한 접근 방식의 단점은 코드가 늘어나는 결과를 가져오므로 처음에 반응 프레임워크를 생성해야 하는 실제 이유를 어떻게든 무효화합니다.

Oluwafisayo Oluwatayo avatar Oluwafisayo Oluwatayo avatar

Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.

LinkedIn

관련 문장 - React Render