Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Nunca tinha visto isso: return () => {}

Salve, pessoal!

No hook customizado criado pelo Vinicios, ele seta o setState do Recoil e depois retorna uma arrow function.

export default function useAlterarEvento(){ //essa primeira linha prefiro assim, hehe
    const setListaEventos = useSetRecoilState<IEvento[]>(listaEventosState)
    return (evento :IEvento) => {
        setListaEventos(listaAntiga => {
            const indice = listaAntiga.findIndex(evt => evt.id === evento.id)
            return [...listaAntiga.slice(0, indice), evento, ...listaAntiga.slice(indice + 1)]
        })
    }
}

Ok. Acho que nunca tinha visto dessa forma, mas consegui entender. Só que fiquei na dúvida como que a variável evento chega ali, já que ela não tá sendo "recebida" na function useAlterarEvento... Ela não deveria estar entre parênteses depois da declaração dela? Isso tem nome? Por que esse comportamento? Como posso pesquisar mais sobre o assunto?

2 respostas

Tá, acho que entendi.

O hook não é uma função, mas sim retorna uma função. Por isso sempre atribuímos ele a uma constante e só então usamos essa constante como uma função no código. Aí aqueles parâmetros setados no hook, devem ser passados na hora de usar a função (constante)?

É isso? Faz sentido meu raciocínio? haha

solução!

Quase na mosca, Dilon!

Esse hook é uma função que retorna uma função para ser usada depois. Isso tem a ver com a regra dos hooks.

Fazemos isso para conseguirmos para isolar toda a lógica de alteração.