この記事では『{}構文内で実体参照に対応する文字を表示する方法』について、
- Unicode番号を直接使用して、実体参照に対応する文字を表示する方法
dangerouslySetInnerHTML
属性を使用して、実体参照に対応する文字を表示する方法
などをサンプルコードを用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
{}構文で実体参照に対応する文字を表示する方法
{}
構文内に実体参照に相当する文字を表示したい場合には、Unicode番号を直接使用するか、dangerouslySetInnerHTML
属性を使用する必要があります。
Unicode番号を直接使用する場合
{}
構文内に実体参照に相当する文字を表示するには、実体参照に相当するUnicode番号を見つけて、{}
構文の内部でのそのUnicode番号を使用します。以下にサンプルコードを示します。
function App() {
return (
<>
{/* エスケープシーケンスを利用 */}
<p>{'First \u00b7 Second'}</p>
{/* Unicode番号から取得 */}
<p>{'First ' + String.fromCharCode(183) + ' Second'}</p>
{/* Unicode番号から取得(テンプレートリテラルを使用した場合) */}
<p>{`First ${String.fromCharCode(183)} Second`}</p>
</>
);
}
export default App;
記述のシンプルさからエスケープシーケンスを利用するのがおすすめです。
なお、以下のサンプルコードに示すように、{}
構文内に実体参照を記述しなければ、意図したとおりに実体参照に相当する文字(ここでは・
)が表示されます。
function App() {
return (
<>
<p>First · Second</p>
</>
);
}
export default App;
dangerouslySetInnerHTML属性を使用する場合
エスケープ処理を抑制するdangerouslySetInnerHTML
属性を用いて、生のHTMLを直接挿入しても、{}
構文内に実体参照に相当する文字を表示することができます。以下にサンプルコードを示します。
function App() {
return (
<>
{/* dangerouslySetInnerHTML属性を利用 */}
<p dangerouslySetInnerHTML={{ __html: 'First · Second' }}></p>
</>
);
}
export default App;
ただし、dangerouslySetInnerHTML
属性を使用すると、生のHTMLが挿入されるので、XSS(クロスサイトスクリプティング)攻撃のリスクがあります。この属性はその名の通り「dangerously」な(危険な)操作であり、使用時には十分な注意が必要です。
あわせて読みたい
『エスケープ処理』とは、プログラミング言語やマークアップ言語で文字列を扱う際に、その言語によって特別な意味を持つ文字や記号(特殊文字)を通常の文字として扱うための処理、または逆に通常の文字を特別な意味を持つものとして扱うための処理のことです。
例えば、HTMLではタグの記述に<
と>
という記号を使用します。これらの記号を文字列で使うと、Webブラウザはタグの記述であるとみなすため、表示することができません。そこで、これらの記号を表示する際には、<
は;<
に、>
は;>
に置き換えられています。この処理をエスケープ処理といいます。
『エスケープ処理』については下記の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。 続きを見るエスケープ処理とは?HTML・JavaScript・URLの例でわかりやすく解説!
本記事のまとめ
この記事では『{}構文内で実体参照に対応する文字を表示する方法』について、以下の内容を説明しました。
- Unicode番号を直接使用して、実体参照に対応する文字を表示する方法
dangerouslySetInnerHTML
属性を使用して、実体参照に対応する文字を表示する方法
お読み頂きありがとうございました。