Field label bound to a createModel accessor crashes: scheduleExploreIfVisible is not a function
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 76/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
- 領域
- frontend
調査の方向性
Field.initから始めます。issueで指摘されているラベルのチェックと、提案されているisAccessorChainの処理を確認し、アクセサーとセレクターのヘルパーを調べてその動作を確認します。createModelを使ったTextFieldの例で再現し、動作するbind形式と比較します。アクセサーチェーンがラベルテキストとして扱われ、最初の探索時にフィールドがエラーをスローしなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
<TextField label={m.$page.labels.key} /> with m = createModel<...>() throws TypeError: ins.scheduleExploreIfVisible is not a function from Widget.explore when the field is first explored. label={bind(m.$page.labels.key)} works.
TypeError: ins.scheduleExploreIfVisible is not a function
at TextField.explore (Widget)
at TextField.explore (PureContainer)
at TextField.explore (Field)
at Instance.explore
Cause: Field.init tests this.label.isComponentType before isSelector(this.label):
if ((this.label as any).isComponentType) labelConfig = this.label;
else if (isSelector(this.label)) labelConfig.text = this.label;
else Object.assign(labelConfig, this.label);
An accessor chain is a Proxy whose every property is a truthy accessor, so it is taken for a component and used as the label widget. isSelector would not catch it either, since config.type is truthy on the proxy.
Suggested fix: in Field.init, check isAccessorChain(this.label) first and set labelConfig.text = this.label. Consider making isSelector return true for accessor chains, so other props typed StringProp | Config behave the same.
Seen on cx 26.7.0.
- 主要言語
- TypeScript
- スター
- 492
- フォーク
- 72
- 平均マージ
- 21分
- マージ済み PR(30日)
- 4
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
codaxy/cxjs のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
feature request
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
似ている issue
-
documentation good first issue roadmap
難易度 1/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
resend/react-email#3876 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
siyuan-note/siyuan#21324 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
dmno-dev/varlock#1279 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
himynameisdave/bsky-profanity-counter#59 ·
メンテナーはふだん 1 日以内に返信