Вы уменьшаете размер массива на 1 при нажатии на кнопку удаления, она всегда будет удалять последнюю строку независимо от того, какую кнопку удаления вы щелкнули после удаления последнего элемента массива.Вам нужно дать уникальный идентификатор каждой строке и удалить элемент с этим идентификатором из массива, а не последний элемент.Используйте функцию map следующим образом
Array.map((i,idx)=>{this.renderRow(i, idx)})
Теперь у вас есть уникальный инкрементный номер, передаваемый в функцию renderRow каждый раз, когда вы вызываете ее, так что этот номер можно использовать в качестве идентификатора.Передайте этот идентификатор в поле ввода в функции renderRow
<input type={type} value={value} id={idx} />
Вместо числа строк, вы можете сохранить массив этих идентификаторов, поэтому, если у вас есть 1 строка, весь ваш массив имеет первый идентификатор, которыйравно [0], а для 2 строк [0,1] и т. д.
Теперь, когда вы нажимаете удалить, передайте идентификатор и удалите этот конкретный идентификатор из DOM
deleteRow= (idx) => {
var elem = document.getElementById(idx);
if (elem.parentNode) {
elem.parentNode.removeChild(elem);
}
this.setState({//Here you can reduce the row count
});
}