Comments (2)
@uhoh-itsmaciek I know it has been a while since this issue was created, but I hope you can still find this helpful! :)
I think this is a valid use case. However, re-running the validation of another input programmatically is not currently possible because input validation requires a change
/blur
event, so it can only happen when the user interacts with an input. In fact, the validate
exposes the event that triggers the validation as well.
react-use-form-state/src/useFormState.js
Lines 147 to 148 in 16df900
Introduce the ability to programmatically re-validating exiting inputs against their current values without an event
is a breaking change. I'll take this into consideration in future major releases.
For the time being, as you know, the form state can be manually updated using dedicated methods such as setFieldError
. I think useEffect
is the prefect candidate here to achieve the fields "dependency" behavior you mentioned above without any code duplications or validate
functions.
const Form = () => {
const [formState, { password }] = useFormState();
// ensures that both `password` and `confirm` are always in sync
// whenever either one changes
useEffect(() => {
const { password, confirm } = formState.values;
formState.setFieldError(
'confirm',
password !== confirm ? 'password must match' : undefined,
);
}, [formState.values.password, formState.values.confirm]);
return (
<form>
<label>
password: <input {...password('password')} />
</label>
<label>
confirm password: <input {...password('confirm')} />
</label>
</form>
);
};
from react-use-form-state.
Cool, thanks for responding. After some reflection, I think this is probably reasonable to keep the surface area of the library simple.
from react-use-form-state.
Related Issues (20)
- Nested objects support HOT 1
- validate that fields match HOT 1
- Async validation HOT 2
- setField should not be packaged with formState HOT 2
- Published version of types lacking pristine/isPristine? HOT 2
- BUG: `validate` function is called on blur when `validateOnBlur` is not specified/false HOT 2
- react update - Cannot update a component from inside the function body of a different component. HOT 10
- Auto-saving forms HOT 1
- Reference Nested Values with Name HOT 1
- Question: how would one handle "dynamically added fields" ? HOT 2
- isPristine feature is not present in dist package HOT 5
- Raw inputs are not given a `name` prop HOT 1
- Question - trigger validation on submit HOT 1
- Request: reset current values to initial values HOT 1
- Function to reset pristine HOT 2
- Request: Input type "number" with BaseInputProps - value is "number" type
- Maintained? HOT 4
- Unable to install with react's latest version react ^17.0.2 HOT 1
- React warning: Cannot update a component while rendering a different component when using `...text` in child component
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-use-form-state.