useMutation
useMutation
是 Apollo Client 提供的一个 React Hook,用于在 React 应用程序中执行 GraphQL 变更操作(mutations)。GraphQL 变更操作用于修改服务器上的数据,例如创建、更新或删除记录。
useMutation
,你可以以声明式的方式定义和处理 GraphQL 变更操作。useMutation
返回一个包含以下属性的对象:
mutate
:执行变更操作的函数。loading
:表示变更操作是否正在进行中的布尔值。error
:如果变更操作失败,包含错误信息的对象。data
:如果变更操作成功,包含返回数据的对象。适用于需要在 React 应用程序中执行数据修改操作的场景,例如:
以下是一个简单的示例,展示如何在 React 组件中使用 useMutation
执行 GraphQL 变更操作:
import React from 'react';
import { useMutation, gql } from '@apollo/client';
const ADD_TODO = gql`
mutation AddTodo($title: String!) {
addTodo(title: $title) {
id
title
}
}
`;
function TodoForm() {
const [addTodo, { data, loading, error }] = useMutation(ADD_TODO);
const handleSubmit = (event) => {
event.preventDefault();
const title = event.target.elements.title.value;
addTodo({ variables: { title } });
};
return (
<form onSubmit={handleSubmit}>
<input type="text" name="title" placeholder="Add Todo" />
<button type="submit" disabled={loading}>
{loading ? 'Adding...' : 'Add Todo'}
</button>
{error && <p>Error: {error.message}</p>}
{data && <p>Added: {data.addTodo.title}</p>}
</form>
);
}
export default TodoForm;
useMutation
正确导入并使用。error
属性捕获和处理错误。update
函数手动更新缓存,确保 UI 与服务器数据一致。通过以上信息,你应该能够理解 useMutation
的基本概念、优势、类型、应用场景以及常见问题的解决方法。
领取专属 10元无门槛券
手把手带您无忧上云