Executando verificação de segurança...
Em resposta a [Não disponível]
1

salve man, boa tarde. parece q o problema ta na forma como você está definindo os valores padrao.

a lib do react-hook-form espera q os valores padroes, sejam um objeto simples q possam ser sincronizados com o estado inicial do form, e qnd vc tenta defini-los de forma assincrona, o estado inicial vira undefined, oq pode estar causando esse erro.

uma possivel soluçao seria buscar os dados da categoria fora do useForm e dps passar os valores retornados para os valores padroes.

por ex:

export default function CategoriaForm() {
    const navigate = useNavigate();
    const { id } = useParams();
    const isNewCategoria = !id;

    const formSchema = z.object({
        id: z.string().nullable(),
        categoria: z.string().min(2, {
            message: "A categoria deve ter mais de 2 caracteres.",
        }),
    });

    // define o estado inicial para os valores padroes do form
    const [defaultValues, setDefaultValues] = useState({
        id: null,
        categoria: '',
    });

    // usa o useEffect para buscar os dados da categoria quando o componente é montado
    useEffect(() => {
        // verifica se é uma nova categoria
        if (!isNewCategoria) {
            // busca os dados da categoria
            categoriaService.buscar(id).then(res => {
                // atualiza os valores padrão com os dados da categoria
                setDefaultValues({
                    id: res.data.id,
                    categoria: res.data.categoria,
                });
            });
        }
    }, [id, isNewCategoria]);

    // inicializa o form com os valores padroes e o schema da validação
    const form = useForm<z.infer<typeof formSchema>>({
        resolver: zodResolver(formSchema),
        defaultValues,
    });

}

dessa forma q pensei, to usando o state e o useEffect pra buscar os dados da categoria e definir eles no defaultValues antes de ser chamado o useForm, pra garantir q os valores padroes sejam definidos antes do form ser renderizado

Carregando publicação patrocinada...