<症状1>
Ark UI 5.12.1にてネストされたモーダルを閉じると親の影響を受ける。
最新版: 5.15.0でも未修正。
<症状2>
取引先ピッカー自体は表示されていますが、親のArk UIダイアログのフォーカストラップが効いていて、ダイアログ外(今のPartnerPicker配置場所)へフォーカスが移動できないため、入力が一切できません。なので PartnerPickerを親ダイアログの中(DialogContentの内側)に戻して、フォーカストラップの範囲内に入れます。これで入力できるようになります。
<原因>
ArkUIでネストモーダルの処理が正常に組まれていない。
<対応>
GitHubのissueで見つけた回避策を試します。
setTimeoutを使ってダイアログを閉じる方法です。
問題の原因: Ark UIの既知のバグ
GitHubのissue(#2557)で報告されている問題と同じ。
症状
- ネストされたダイアログ(親Dialog → 子Dialog)で、子Dialogを閉じると親Dialogの動作に影響する
- Ark UI v2以降から存在するバグ
trapFocus(フォーカストラップ)の処理に問題がある
今回のケース
結論
| 原因 | 判定 |
|---|---|
| こっちのソース記述の問題 | ❌ No |
| Ark UIの構造上の問題 | ✅ Yes |
| こっちのUI構造の問題 | ❌ No(ネストは一般的なパターン) |
対応策
- 現状維持 - PartnerPickerだけdivベースにして、他はArk UIを維持(今の状態)
- 全削除 - すべてのダイアログをdivベースに書き換え
<まとめ>
結構複雑なUIを作る時、ArkUI(ヘッドレスUI)使わない方がいい。
ぶっちゃけ現代のLLMだとArkUIを使うメリットが薄い気がする。
無駄にバグが増えるだけ。
ウィンドウにSVG装飾をしているからよかれと思ってArkUIにしたが、問題が続発しまくる。
簡単な事しかしないならArkUIでいいけど、reactとかvueとかsvelteとか頻繁に変えたりするにはメリットだが、時間がかかって無駄なバグを生むことが多い。
シンプルな構成の方がLLMにはいいんじゃないか?
ステート管理だって各フレームワーク側に乗せた方が、管理しやすいと思うのだが・・・
もう作ってしまったが、ArkUIに依存しないものを作ってコードを比較してみよう。
0 件のコメント:
コメントを投稿