Server Functions - Outros tópicos
Invocando Server Functions dentro e fora de um formulário
Quando uma Server Function é chamada em um formulário, algumas coisas “mágicas” acontecem:
- Um objeto
formData
é passado como primeiro argumento (assinatura da Server Action muda). - A função é automaticamente envelopada em uma
transition
.
Diferentes maneiras de passar argumentos para uma Server Function / Action
Muitas vezes, quando criamos uma Server Action, queremos passar argumentos adicionais para ela (além do formData). Vamos ver como fazer isso?
- [Form + Action] Passando apenas o formData e passando argumentos adicionais em
input:hidden
. - [Form + Action] Automaticamente passando formData + argumentos adicionais.
- [Form + Action] Passando apenas o formData + fazendo o bind de argumentos adicionais - nesse caso, o argumento adicional vem antes do formData.
- [Form + Event Handler] Usar a action em um event handler como
handleSubmit
ao invés de em umaaction
. Fazer o parse manual do formData no front e passar apenas argumentos (nesse caso, o formData não será passado).
Exercício
Para esse exercício, vamos treinar todas as maneiras de passar argumentos para a nossa Server Action. Lembrando que o argumento que precisamos passar é o id da vaga para que ela possa ser deletada com nossa API.
Resolução
Experimente “brincar” com as diferentes formas de passar argumento para a server action deleteJob
.
Hot Take / Controvérsia
O que você acha desse tweet? Consegue entender a controvérsia?