-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
<File.Upload />
infinite render loop when using transformIn
property
#4366
Comments
Hey Torry! Here is a CSB with a working solution: But I'll take a look if we actually can fix the issue when returning a new instance. |
I wasn’t able to find a solution, and here’s why:
How can we deal with that problem? My suggestion is to create a dedicated section in the docs for when dealing with objects/arrays in transformer functions. Any other suggestions? |
Sounds like a good solution @tujoworker 👍 Mutating the input instead of creating a new array works for us, and explaining it in the docs would help out future users of the transformer functions. |
Thanks for the feedback. I had another look and found a way to support it. I will create a PR soon. I also think that your transformIn/transformOut needs to be the opposite. But I will add a full example in the docs for that use case. I think its good to have documented and tested. Just to confirm your use case: You want to store a different value in the data context than what is used in by the upload field itself. Is that correct? |
Yes, that's correct! We want to store an object |
If that's the only reason, I would recommend to not transform it. Because it (the File) should not be in the way when it is in the data context. Or is it? In the provided example, I actually provide a "file cache", just to restore the file again: https://eufemia-git-fix-forms-field-transform-in-out-instance-eufemia.vercel.app/uilib/extensions/forms/feature-fields/more-fields/Upload/#transformin-and-transformout Let me know what do you think about it. Also, this PR enhances the docs about what "in" and "out" means when using these transformers. |
I have updated the CSB with the new version. |
Well, we submit the entire data context to the server, and the File object is potentially large. This will increase the request size, and makes the request object less readable.
Not sure about the purpose of the file cache though 🤔 How would this work if the user refresh the page, and the data is loaded from the |
Yes, I totally understand this. And you can use that technique. You may else have a look on other techniques like filterData.
Yeah, its only about the "possible" UX when a user clicks on the file to view it. It we would provide a "preview" of an image in the future. |
## [10.61.0](v10.60.1...v10.61.0) (2024-12-13) ### 📝 Documentation * add guidelines for writing commit messages to the contribution guide ([#4389](#4389)) ([34eff0e](34eff0e)) * **Upload:** add `id` property ([#4401](#4401)) ([56d4956](56d4956)) ### ✨ Features * **Forms:** add missing support for `defaultValue` for Field.Slider ([#4394](#4394)) ([701ab66](701ab66)) * **Logo:** update sbanken logo ([#4379](#4379)) ([069ae1a](069ae1a)) * **Upload:** make `id` property as optional ([#4405](#4405)) ([0c58973](0c58973)) * **Value.Upload:** add async `onFileClick` event ([#4397](#4397)) ([be1c21c](be1c21c)) ### 🐛 Bug Fixes * **DatePicker:** add `null` as possible date type as return value ([#4407](#4407)) ([363e0b5](363e0b5)) * **DatePicker:** throw error when `date` is invalid ([#4396](#4396)) ([f977ebc](f977ebc)) * **FieldBlock:** remove max-width for label when width stretch ([#4406](#4406)) ([20c02d4](20c02d4)) * **Forms:** enhance transformIn and transformOut to support changed array and object instances ([#4392](#4392)) ([ae4648a](ae4648a)), closes [#4366](#4366) * **Slider:** ensure `min` and `max` value is respected when `step` doesn't fit exactly ([#4395](#4395)) ([2c00b0c](2c00b0c)) * **Tabs:** ensure cached content never takes up visual space ([#4399](#4399)) ([360aacc](360aacc)) * **Upload:** display files without anchor when their size is not given ([#4390](#4390)) ([70df7c8](70df7c8)) * **Upload:** display spinner in async `onFileClick` without file `id` ([#4393](#4393)) ([b743d6e](b743d6e))
🎉 This issue has been resolved in version 10.61.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
🐛 Bug Report
Using the
transformIn
in the<File.Upload />
component cause an infinite render loop and the entire page will crash.To Reproduce
Steps to reproduce the behavior:
https://codesandbox.io/p/sandbox/field-upload-infinite-render-loop-using-transformin-9gl7zy
Expected behavior
For context, we are trying to map the
UploadValue
object from the<File.Upload />
component to and from the following form state object:Run
npx envinfo
Eufemia Version
10.59.0
The text was updated successfully, but these errors were encountered: