Не уверен, что поможет, но вы всегда можете удалить элемент из текущего массива, поэтому refre sh не требуется, например, вы можете передать в качестве подпрограммы функцию, которая получает идентификатор, а затем отфильтровать массив студентов, чтобы исключить элемент, который совпадает с этим идентификатором, а затем обновляет состояние с новыми свойствами массива и счетчика, что-то вроде этого
В вашем родительском элементе:
const Display = () => {
const [state, setState] = useState({ students: [], count: "" });
const deleteItem = (id) => {
const newStudents = state.students.filter(student => student.id !== id)
const newCount = newStudents.length;
setState({ students: newStudents, count: newCount })
}
// Rest of the code
}
Теперь передайте эту функцию вашему дочернему компоненту .
<Table obj={object} deleteItem={deleteItem} />
В дочернем компоненте просто измените метод removeData, добавив реквизит deleteItem:
const Table = props => {
const removeData = () => {
axios
.delete("/students/" + props.obj.id)
.then(console.log("Deleted"))
.catch(err => console.log(err));
// Now if your request succeeds call the function to remove the item from the students state array
props.deleteItem(props.obj.id);
};
// Rest of the code
}
Я знаю, что это не отвечает на ваш вопрос, но когда вы работаете с реагировать или лучше сделать это вычисления и фильтры на стороне приложения, как в этом случае, что хотя запись была удалена из БД, мы также удалили запись из объекта состояния студента, и нет необходимости обновлять sh page.
Помните, что вы создаете одностраничное приложение, поэтому мы хотим, чтобы пользователь чувствовал себя наилучшим образом без обновления страницы для каждого действия пользователя.