feat: migrate sign up screen to react-hook-form

This commit is contained in:
Vinicius Souza 2024-10-28 11:38:00 -03:00
parent f0c34e2044
commit f21cd9b7f9

View file

@ -1,6 +1,6 @@
import { useState } from 'react';
import { Center, Heading, Image, ScrollView, Text, VStack } from '@gluestack-ui/themed'; import { Center, Heading, Image, ScrollView, Text, VStack } from '@gluestack-ui/themed';
import { useNavigation } from '@react-navigation/native'; import { useNavigation } from '@react-navigation/native';
import { Controller, useForm } from 'react-hook-form';
import BackgroundImg from '@assets/background.png'; import BackgroundImg from '@assets/background.png';
import Logo from '@assets/logo.svg'; import Logo from '@assets/logo.svg';
@ -13,18 +13,10 @@ import { Button } from '@components/Button';
export function SignUp() { export function SignUp() {
const navigation = useNavigation<AuthNavigatorRoutesProps>(); const navigation = useNavigation<AuthNavigatorRoutesProps>();
const [name, setName] = useState(''); const { control } = useForm();
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [confirmPassword, setConfirmPassword] = useState('');
function handleSignUp() { function handleSignUp() {
console.debug({ // do something again
name,
email,
password,
confirmPassword,
});
} }
const handleGoBack = () => { const handleGoBack = () => {
@ -54,28 +46,60 @@ export function SignUp() {
<Center gap="$2" flex={1}> <Center gap="$2" flex={1}>
<Heading color="$gray100">Crie sua a conta</Heading> <Heading color="$gray100">Crie sua a conta</Heading>
<Input placeholder="Nome" autoCorrect={false} onChangeText={setName} /> <Controller
control={control}
<Input name="name"
placeholder="E-mail" render={({ field: { onChange, value } }) => (
keyboardType="email-address" <Input
autoCapitalize="none" placeholder="Nome"
autoCorrect={false} autoCorrect={false}
onChangeText={setEmail} onChangeText={onChange}
value={value}
/>
)}
/> />
<Input <Controller
placeholder="Senha" control={control}
autoCapitalize="none" name="email"
secureTextEntry render={({ field: { onChange, value } }) => (
onChangeText={setPassword} <Input
placeholder="E-mail"
keyboardType="email-address"
autoCapitalize="none"
autoCorrect={false}
onChangeText={onChange}
value={value}
/>
)}
/> />
<Input <Controller
placeholder="Confirme a senha" control={control}
autoCapitalize="none" name="password"
secureTextEntry render={({ field: { onChange, value } }) => (
onChangeText={setConfirmPassword} <Input
placeholder="Senha"
autoCapitalize="none"
secureTextEntry
onChangeText={onChange}
value={value}
/>
)}
/>
<Controller
control={control}
name="confirmPassword"
render={({ field: { onChange, value } }) => (
<Input
placeholder="Confirme a senha"
autoCapitalize="none"
secureTextEntry
onChangeText={onChange}
value={value}
/>
)}
/> />
<Button title="Criar e acessar" onPress={handleSignUp} /> <Button title="Criar e acessar" onPress={handleSignUp} />