Sim! muda completamente a maneira como funciona.
Quando utilizamos um useState para cada campo, fica mais fácil de atualizar campos sozinhos. Por exemplo, digamos que o usuário esta digitando o nome. No caso do nome ter um estado somente para ele, temos apenas que nos preocupar com o nome, mas se estivermos usando um único estado para vários campos, teremos que cuidar para não modificar os outros estados.
Exemplo
const [state, setState] = useState({
nome: '',
sobrenome: '',
cpf: '',
})
Para o caso apresentado acima, se quisermos modificar o nome, termos que sempre salvar o estado atual completo em uma variavel, atualizar o nome e setar o estado completo:
// criar uma copia do estado atual completo
const estadoAtual = state;
// modificar o campo nome, na copia
estadoAtual.nome = 'Marcelo';
// re-escrever o estado completo pelo novo estado atualizado
setState(estadoAtual);
Portanto para modificar apenas o nome estaríamos tendo que copiar o estado completo, depois modifica-lo e por fim re-escrever ele completamente, mesmo que so desejamos alterar o nome. Esta prática acaba se tornando ineficiente, eu recomendaria fortemente em utilizar um estado para cada campo.
Por exemplo com um estado para cada campo, se precisarmos alterar o nome, podemos simplesmente utilizar o setNome:
const [nome, setNome] = useState('');
const [sobrenome, setSobrenome] = useState('');
const [cpf, setCpf] = useState('');
setNome('Marcelo');
Desta maneira não modificamos nem sequer tocamos em outro estado a não ser o próprio nome. Diminuindo a chance de erros e bugs, e aumentando a eficiência do nosso código.
Espero ter ajudado Renan, todos estamos juntos pelo aprendizado!!!