1
resposta

[Dúvida] useState() = Entendendo mais a fundo!

Boa tarde Pessoal,

Consegui concluir o projeto da aula e até fiz funcionar em um projeto que estou fazendo, mas não entendi muito bem como estou direcionando as variáveis. Vou explicar com o código abaixo, estou usando styled-component, por isso das tags diferentes.

Função do formulário:

function CheckCn(){
    const [service, setService] = useState('')


    const getSubmit = (event) => {
        event.preventDefault()
        console.log(service);
        setService('')
        }



    return(
        <form onSubmit={getSubmit}>
            <CheckCnNovo>
                <FormTitleLeft title={'Novo Serviço'} name={'voltar'} link='/check/cn'/>
                <FormCol  value={service} alterado={valor => setService(valor)} label={'Serviço'} placeholder={'Digite o nome do serviço'}/>
                <ButtonConfirm buttonName="Confirmar" />
            </CheckCnNovo>
        </form>
    )
}
export default CheckCn

Componente input. FormCol.js

export function FormCol({label, placeholder, value, alterado}){

    const getDigitado = (event)=>{
        alterado(event.target.value)

    }
    return (
            <FormColContainer>
                <Label>{label}:</Label>
                <Input  value={value} placeholder={placeholder} onChange={getDigitado}></Input>
            </FormColContainer>
    )
}

Eu segui a mesma lógica da aula, só renomeei de aoAlterado para alterado. O que eu não entendo é porque alterado sendo uma props recebe um parametro. Na função CheckCn alterado recebe uma arrow function, essa arrow function recebe um valor . O que é esse valor? É o event.target.value? então a props alterado seria algo do tipo...

<FormCol  value={service} alterado={event.target.value => setService(event.target.value)} label={'Serviço'} placeholder={'Digite o nome do serviço'}/>

Se ficar muito confuso com meu exemplo posso pegar o exemplo da aula e dar continuidade na explicação.

Abraços.

1 resposta

Olá Rodolfo, tudo bem?

Entendi sua dúvida! Vamos lá, o useState é uma função do React que permite adicionar estado a um componente funcional. No seu exemplo, você está criando um estado chamado service e uma função setService que permite alterar o valor desse estado.

A props "alterado" que você está passando para o componente FormCol é uma função que será executada toda vez que o valor do input for alterado. Essa função recebe como parâmetro o valor digitado no input, que é o "event.target.value".

Então, quando você chama a função "alterado" no componente FormCol, você está passando o valor digitado no input como parâmetro para a função setService, que irá atualizar o estado service com esse valor.

Resumindo, a props "alterado" é uma função que recebe o valor digitado no input como parâmetro e chama a função setService para atualizar o estado service.

Espero ter ajudado, caso precise estarei aqui!

Abraços e bons estudos!