2022年3月から主要ブラウザ(Chrome, Edge, Firefox, Safari)で dialog要素が利用できるようになったそうなのでそれを使ってDialogすなわりModalのコンポーネントを作ったらどんな感じになるかを試してみました.説明少なめですが記事にします. また,今回はできるだけ最小限のコードで作成することを意識しています. dialog要素ってなに? eventで表示/非表示を切り替えることができる backdropという疑似要素があり,すでにOverlayが作成されている(これ結構嬉しい) メリットはこの2点かなと思います. わかりやすく作ってみる Reactで最小限に作るとこんな感じですね. const Sample = () => { const dialogRef = useRef<HTMLDialogElement>(null); const openD
![HTMLのdialog要素でDialogComponentを作る(React)](https://cdn-ak-scissors.b.st-hatena.com/image/square/a2aa8299d5be9c642f5d958e739410a7cde923bf/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--xb0rwnB5--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3AHTML%2525E3%252581%2525AEdialog%2525E8%2525A6%252581%2525E7%2525B4%2525A0%2525E3%252581%2525A7DialogComponent%2525E3%252582%252592%2525E4%2525BD%25259C%2525E3%252582%25258B%2525EF%2525BC%252588React%2525EF%2525BC%252589%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3AKnob%25252F%2525E3%252581%2525AE%2525E3%252581%2525BE%2525E3%252581%2525A9%2525E5%252585%252588%2525E7%252594%25259F%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzY5ZmNkMjU5MzUuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)