Comments (2)
Seria incrivel ter isto no unform!
from unform.
Adicionei a funcionalidade na lib.
Devido a excelente arquitetura da lib que não ter estado interno para as input inputs, tive que adicionar um useRef
que guarda o valor inicial do formulário, para poder comparar com o valor final do formulário.
Me pareceu fazer sentido que, esse valor inicial seja alterado pelos métodos de setData
, reset
, setFieldValue
e clearFieldValue
.
Veja o fluxo:
- Formulário é exibido em tela, um
initialData
e passado ao componente deForm
; - O
initialData
é armazenado nouseRef
, antes é convertido com odot-object
- O
originalData.current
pode ser alterado pelos métodossetData
,reset
,setFieldValue
eclearFieldValue
. Isso porque normalmente usamos eles para alterar os dados do form quando recebemos os dados da API, dessa forma, seriam esses os dados originais. Uma alteração de dados, que caracteriza o.isFormDirty() === true
é quando o usuário interage com uma input, por exemplo. .isFormDirty()
é chamado para validar se o form foi alterado. Como seria validado:- Os possíveis dados alterados do formulário são buscados e transformados com o
dot-object
- Com um
for in
cada atributo dooriginalData.current
é comparado com seu respectivo nocurrentDataAsKeyPair
. Oswitch
com otypeof
é usado para contornar problemas de tipos de dados causados pelas inputs que retornam texto quando deveria ser número
- Os possíveis dados alterados do formulário são buscados e transformados com o
Essa foi a regra usada para implementar a funcionalidade até agora, tudo que foi apresentado aqui está em aberto para discussão.
from unform.
Related Issues (20)
- Expo ImagePicker, DocumentPicker, Typescript example
- more informative error message when `useField` is being used in a component that's not a child of <Form>
- react-native-masked-text undefined field HOT 1
- error in the return oh the typing of the path
- TypeError: a is undefined
- Support middleware in getValue HOT 1
- formRef.current new key referring to form's html element
- The best way to create dynamic arrays with unform HOT 5
- need to add the css property to work correctly HOT 1
- Picker Select React Native
- edit form with setdata HOT 2
- Unform React Select Example Doc HOT 1
- Looking for some way to use unform in a <tr/> HOT 2
- Multiples Checkboxes whitin one form: HOT 1
- Access input value via useEffect
- How to get only data that have value HOT 1
- initialData not working HOT 3
- Persist Data HOT 6
- Radio Input with typecript HOT 1
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 unform.