Open shishmak opened 1 week ago
@shishmak First of all, you are using MobX
incorrectly. In your sandbox I am seeing the following warnings:
[MobX] Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: ObservableObject@2.jsonScheme
at eval (https://s9pdhk.csb.app/node_modules/mobx-react-lite/es/observer.js:43:47)
[MobX] Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: ObservableObject@2.uiScheme
at eval (https://s9pdhk.csb.app/node_modules/mobx-react-lite/es/observer.js:43:47)
[MobX] Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: ObservableObject@2.formData
at eval (https://s9pdhk.csb.app/node_modules/mobx-react-lite/es/observer.js:43:47)
When doing a console.log of your formData
as I type, I don't see it updating so perhaps this is leaving the form in a confused state.
Perhaps once you fix things with MobX
the issue may be fixed?
@heath-freenome I fixed the mobX errors and added an example on React States. The error remained in both places
Prerequisites
What theme are you using?
utils
Version
5.x
Current Behavior
Hello, I need to have custom validation depense with 2 fields Previosly I use rjsf 3.x and all works good. I upgrade project to 5.x and find bug (as I think).
I have a form with a dependency "Test" <= "Test2". I applied a custom validation where I specified this dependency.
const validate = (formData: any, errors: FormValidation) => { if (formData["Test"] > formData["Test2"]) errors["Test"]?.addError("Test should be LE than Test2"); return errors; };
And I noticed a problem: Let's say initially I have Test = 10 and Test2 = 15 If I set Test2 = 5, then an error will appear near Test. This is the correct behavior If I return Test2 = 15, then the error will not disappear. And this looks like a bug, because the values Test (10) and Test2 (15) satisfy the condition "Test" <= "Test2"example of my code: https://codesandbox.io/p/sandbox/yyrxsp
Expected Behavior
If no validation errors are found, then no errors should be shown.
This error should not be there,
because according to the code the condition = false
const validate = (formData: any, errors: FormValidation) => { if (formData["Test"] > formData["Test2"]) errors["Test"]?.addError("Test should be LE than Test2"); return errors; };
Test < Test2 (10 < 15)Steps To Reproduce
https://codesandbox.io/p/sandbox/yyrxsp
Environment
Anything else?
No response