Next Form (next/form)
A partir da versão 13, o Next e o React começam a usar extensivamente os formulários (forms) do HTML com Server Components.
O React, então, amplia o form nativo do HTML para que a action, além de receber uma string, também possa receber uma função JavaScript. Quando essa action recebe uma função JavaScript, essa função é chamada de ServerAction.
O problema é que, quando fazemos requisições GET em um formulário e passamos uma página para a action, o formulário HTML continua se comportando como um formulário nativo. Isso significa que a página será recarregada no cliente - o que nem sempre é desejável.
Além disso, quando passamos uma string para a action, não conseguimos fazer o pré-carregamento dessa nova página que será visitada após a submissão do formulário.
O resumo dá ópera do <form> no React é o seguinte:
- Quando passamos uma
stringpara aaction, o form comporta-se como um formulário nativo HTML - Quando passamos uma função para a
action, o form chama essa função (server action)
Vantagens de usar Form ao invés de form
- Prefetching dos dados da página de destino.
- Client-side navigation - não é necessário um reload completo da página. Isso preserva, além da UI, também o estado (caso haja algum)
Algumas coisas para ficar de olho 👀
Quando a action é uma string, o componente Form aceita as props:
- action
- replace
- scroll
- prefetch
Quando a action é uma função, o componente só aceita a prop action.
Ou seja, você não pde passar, por exemplo, a prop method.
Na prática
Vamos agora, no Workshop, ver como funciona o <Form> na prática.