Mutaciones y actualización de la caché
Ahora vamos a realizar la parte de la integración. Abra src/components/Todo/TodoItem.js
y añada el siguiente código para definir la mutación de borrado
const TodoItem = ({index, todo, client}) => {+ const REMOVE_TODO = gql`+ mutation removeTodo ($id: Int!) {+ delete_todos(where: {id: {_eq: $id}}) {+ affected_rows+ }+ }+ `;+ const [removeTodoMutation] = useMutation(REMOVE_TODO);
Disponemos de una función definida para gestionar el botón Hacer clic para eliminar una tarea pendiente. Vamos a actualizar la función para utilizar la función de mutación removeTodoMutation
.
const removeTodo = (e) => {e.preventDefault();e.stopPropagation();+ removeTodoMutation({+ variables: {id: todo.id},+ optimisticResponse: true,+ update: (cache) => {+ const existingTodos = cache.readQuery({ query: GET_MY_TODOS });+ const newTodos = existingTodos.todos.filter(t => (t.id !== todo.id));+ cache.writeQuery({+ query: GET_MY_TODOS,+ data: {todos: newTodos}+ });+ }+ });};
Did you find this page helpful?
Start with GraphQL on Hasura for Free
- Build apps and APIs 10x faster
- Built-in authorization and caching
- 8x more performant than hand-rolled APIs