Witam.
Jestem w trakcie pisania własnej apki typu todo (wiem oklepany temat do bólu, ale całkiem przyjemnie się go pisze). Posiadam container który pobiera dane z serwera w componentDidMount, i następnie przekazuje je do state metodą setState. Na podstawie danych w state, container renderuje listę zadań. Każdy element posiada możliwość usuniecia, czyli wysłania polecenia Delete do serwera który usuwa dany element. Jednak dalej jest on widoczny na stronie do czasu odświeżenia. Teraz pytanie jak (najlepiej bez przeładowania strony) pozbyć sie tego elementu z widoku po usunięciu z bazy danych.
import React, { Component } from 'react';
import Todo from '../components/Todo/Todo';
import NewTodo from '../components/NewTodo/NewTodo';
import axios from 'axios';
class TodoPanel extends Component {
state = {
todos: [],
todoToRemove: ""
}
componentDidMount () {
if(this.state.todoToRemove === ""){
axios.get("/api/todos")
.then(todos => {
console.log(todos);
this.setState({todos: todos.data})
});
}
}
removeTodoHandler = (id) => {
console.log(id);
axios.delete('/api/todos/' + id)
.then(response => {
console.log(response);
});
}
render() {
return(
<React.Fragment>
{this.state.todos.map( (todo) => {
return(
<Todo
title={todo.name}
key={todo._id}
indexValue={todo._id}
completed={todo.completed}
removed={() => this.removeTodoHandler(todo._id)}
/>
);
})}
<NewTodo />
</React.Fragment>
);
}
}
export default TodoPanel;