Operations on a list[T] | None var throw when the value is None
メンテナーはふだん 1 日以内に返信
評価
調査の方向性
issue では ArrayVar とその配列操作が挙げられており、SetVar.to_array() における set のオプション処理が参考になります。変更 #7800 を読み、オプションのリストに対して contains と length がどのようにコンパイルされるかを追い、提示された例で失敗を再現してください。None が空のリストとしてレンダリングされ、その結果 contains が false、length が 0 となり、prerender が成功すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Operations on a list[T] | None var that holds None throw on the frontend. #7800 fixes the same defect for set[T] | None (SetVar). Optional lists still have it.
Repro
import reflex as rx
class State(rx.State):
items: rx.Field[list[str] | None] = rx.field(None)
def index():
return rx.vstack(
rx.text(State.items.contains("x")),
rx.text(State.items.length()),
)
app = rx.App()
app.add_page(index)
Result
The page does not render:
TypeError: Cannot read properties of null (reading 'includes')
length() fails the same way (null.length). The prod prerender fails for the same reason.
Expected
A None list acts as an empty list: contains is false and length is 0. This is the rule that #7800 uses for optional sets.
Suggested fix
Give an optional ArrayVar the same null-safe view that #7800 adds to SetVar.to_array(), which compiles to (x ?? []). Use that view in the array operations.
- 主要言語
- Python
- スター
- 29k
- フォーク
- 1.8k
- 平均マージ
- 2日 22時間
- マージ済み PR(30日)
- 143
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
reflex-dev/reflex のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
reflex-dev/reflex#7825 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
PropsBase nested serialization applies parent include/exclude filters to child fields対応中かも @harsh21234i が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
reflex-dev/reflex#7787 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
OTel: add trace_flags to JSON log records so unsampled trace ids are recognizable対応中かも @ShaanGS が 7 日前に担当しました。 オープンenhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
reflex-dev/reflex#7729 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
0.9.12 changelog follow-ups: the #7132 "_get_was_touched" entry describes unreachable behaviour, #7115's hasattr/getattr change is undocumented, #7131's wording再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
reflex-dev/reflex#7260 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
ClientStateVar: a component that mounts while the value is non-default never re-renders on the push back to the default再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
reflex-dev/reflex#6823 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
reflex-dev/reflex の issue をすべて見る
似ている issue
-
[Bug]: graphify query loads every language extractor just for _file_stem (about 34 ms per call)対応中かも @rohit-jsfreaky が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Graphify-Labs/graphify#5160 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
Variable declared without a value suppresses ${VAR:-default} expansion対応中かも @Omarinho12345 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
theskumar/python-dotenv#750 ·
メンテナーはふだん 12 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
UKGovernmentBEIS/control-arena#947 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
jasonacox/Powerwall-Dashboard#897 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信