a2ui-project / a2ui-project/a2ui

bug(lit): v0.8 interactive components missing requestUpdate after setData

オープン 初心者向け
#1,023 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
component: lit renderer P2 status: needs review type: bug
主要言語
TypeScript
スター
16.4k
フォーク
1.3k
平均マージ
2日 13時間
マージ済み PR(30日)
134

説明

# Description

While fixing #597 (Slider value not updating) in #1022, I discovered that other v0.8 interactive components have the same latent bug: they call `processor.setData()` without `requestUpdate()`, meaning the component does not re-render after the data model is updated.

## Affected components

| Component | File | Has `requestUpdate()`? |
|---|---|---|
| `Slider` | `renderers/lit/src/0.8/ui/slider.ts` | **Yes** (fixed in #1022) |
| `MultipleChoice` | `renderers/lit/src/0.8/ui/multiple-choice.ts` | **Yes** (already had it) |
| `TextField` | `renderers/lit/src/0.8/ui/text-field.ts` | **No** |
| `DateTimeInput` | `renderers/lit/src/0.8/ui/datetime-input.ts` | **No** |
| `CheckBox` | `renderers/lit/src/0.8/ui/checkbox.ts` | **No** |

## Why it's not immediately visible

- **TextField**: The native \`\` element displays typed characters regardless of Lit re-renders, so the bug is masked. However, any *other* component or label bound to the same data path will not update.
- **CheckBox / DateTimeInput**: These would need testing to confirm visible impact.

## Suggested fix

In #1022 I added a `updateBoundData()` helper to the `Root` base class that encapsulates the `setData()` + `requestUpdate()` pattern. The affected components can be refactored to use it, the change would be minimal for each.

## Root cause

The deeper issue is that `SignalWatcher` does not pick up changes made through `SignalMap.set()` during `processor.setData()`. This might be worth investigating separately in `web_core`, but in the meantime `requestUpdate()` is a reliable workaround (and already used by `MultipleChoice`).

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

The issue lists the affected component files in `renderers/lit/src/0.8/ui/`. Examine the `TextField`, `DateTimeInput`, and `CheckBox` components to see where `processor.setData()` is called. Use the `updateBoundData()` helper from the `Root` base class (as introduced in PR #1022) to replace those calls, ensuring each is followed by `requestUpdate()`. Test the changes by running any existing tests for these components or by manually verifying the UI updates correctly.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
typescript
領域
frontend, web-dev
issue の種類
バグ
難易度
2/5
見積もり時間
1〜3時間
活発さ
静か
明瞭さ
明確に書かれている
初心者へのやさしさ
70/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。