Add file serialization support to the `form` component / `use_form_data` hook
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start with the form component and use_form_data hook, using PR #58 and the original feature in #7 for context. Resolve whether file fields use metadata, multipart upload, or both before implementing. Done means mixed file and regular fields serialize without a reload, the behavior is tested, and documentation is updated.
Written by the indexing model from the issue text.
Description
Description
Follow-up to #58 (the form component and use_form_data hook, which closed #7).
The form component's client-side interception currently serializes non-file fields only. File inputs (<input type="file">) are silently excluded because the submission handler iterates FormData entries and calls .toString() on each value, which for File objects yields [object File] and loses the file content.
The PR description for #58 explicitly deferred this:
Non-file fields only; file serialization is deferred.
Proposed scope
Support forms that contain file inputs, matching how the current behavior treats other input types. Possible options to evaluate:
- Include file metadata (name, size, type, lastModified) in the serialized form data, without uploading file content — useful for validation/UI feedback on the server.
- Defer file content upload to a separate multipart
POSTwhen the form is submitted, integrating with the router's navigation model. - Combination: send metadata for a GET-style/
pushStatenavigation while supporting an optional file payload.
Acceptance criteria
- Defining a form with one or more
<input type="file">fields does not break serialization of the other fields. - File fields are represented in the
use_form_data()output in a well-defined way (currently undocumented behavior). - No full page reload occurs on submit of a form with file inputs (consistent with #58).
- A test covers a form that mixes file inputs with regular fields.
- Documentation updated for file-field behaviour.
Related
- PR: #58
- Original feature: #7
- Dominant language
- Python
- Stars
- 15
- Forks
- 9
- Avg merge
- 9h 57m
- Merged PRs (30d)
- 2
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from reactive-python/reactpy-router
-
complexity: 0 (highest) priority: 1 (high) type: feature
reactive-python/reactpy-router#32 · 1 assignee ·
-
complexity: 2 (medium) priority: 3 (low) type: feature
Difficulty 4/5 3-5 days Newbie friendliness 35/100
All issues in reactive-python/reactpy-router
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
learningequality/ricecooker#747 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
run-llama/llama_index#23199 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
KhronosGroup/glTF-Blender-IO#2769 ·