dangerouslySetInnerHTML
는 React에서 제공하는 속성입니다.
이것을 사용하면 JavaScript를 통해 직접 HTML을 DOM에 삽입할 수 있습니다.
이것은 문자 그대로 "위험하게" DOM에 직접 HTML을 삽입하기 때문에, 이 이름이 붙여진 것입니다.
XSS(크로스 사이트 스크립팅) 같은 보안 문제에 쉽게 노출될 수 있기 때문에 사용할 때 주의가 필요합니다.
사용 방법
function MyComponent(props) {
return (
<div dangerouslySetInnerHTML={{ __html: props.htmlString }} />
);
}
function App() {
const htmlString = "<p style='color: red;'>This is a dangerous example!</p>";
return (
<div className="App">
<MyComponent htmlString={htmlString} />
</div>
);
}
expor
활용 방법 1 : svg 코드 렌더링
외부에서 가져온 SVG 코드나 복잡한 SVG 문자열을 렌더링할 때 유용하다.
import React from 'react';
function SvgComponent({ svgString }) {
return (
<div
dangerouslySetInnerHTML={{ __html: svgString }}
/>
);
}
function App() {
const svgString = `
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="black" strokeWidth="3" fill="red" />
</svg>
`;
return (
<div className="App">
<h1>Rendering SVG using dangerouslySetInnerHTML</h1>
<SvgComponent svgString={svgString} />
</div>
);
}
export default App;
'리액트' 카테고리의 다른 글
[리액트] 별점 컴포넌트 (0) | 2024.01.24 |
---|---|
리액트 useImperativeHandle, forwardRef로 부모 컴포넌트가 자식 컴포넌트의 메서드나 변수에 직접 접근 (0) | 2024.01.17 |
리액트에서 string 데이터와 ReactElement가 혼합된 데이터 렌더링 하기 (0) | 2023.10.11 |
FileReader로 파일 읽고 업로드한 파일 미리보기 구현 (0) | 2023.09.18 |
리액트에서 조건부 클래스 이름줄 때 classNames 라이브러리 사용 (0) | 2023.08.27 |
리액트에서 dangerouslySetInnerHTML 렌더링하기