Вообще не знаю реакт, но вижу, что вы постоянно пушите в массив новый объект, вместо того чтобы менять текущий. Может вы так хотели сделать?
const handleChange = (index, value, key) => {
const newFields = [...fields];
newFields[index][key].value = value;
setFields(newFields);
};