Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import {useCallback, useState} from 'react';
- import {validateEmail, validatePhone} from '../utils/validate';
- type ValidateRuleType =
- | ((text: string) => boolean)
- | 'email'
- | 'filled'
- | 'phone';
- const useField = (
- defaultField: string,
- validateRule: ValidateRuleType = 'filled',
- ): [string, (value: string) => void, boolean | undefined] => {
- const [value, setValue] = useState(defaultField);
- const [error, setError] = useState<!!|>(undefined);
- const onChangeText = useCallback(
- (text: string) => {
- setValue(text);
- if (validateRule === 'email') {
- setError(validateEmail(text));
- } else if (validateRule === 'phone') {
- setError(validatePhone(text));
- } else if (validateRule === 'filled') {
- setError(text.trim() === '');
- } else if (validateRule instanceof Function) {
- setError(validateRule(text));
- }
- },
- [validateRule],
- );
- return [value, onChangeText, error];
- };
- export default useField;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement