📅  最后修改于: 2023-12-03 14:49:39.318000             🧑  作者: Mango
在使用 React 开发应用程序时,您可能需要调用一个 GraphQL API 来获取数据。在本教程中,我们将使用 Fetch 和 GraphQL 来向您演示如何构建 React 应用程序的客户端。
在使用Fetch调用GraphQL之前,您需要确保您的应用程序中具有以下运行时环境:
在 React 中,您可以使用 Fetch 从客户端调用 GraphQL API。在这里,我们将使用 Fetch 发送一个 POST 请求。此请求将携带包含 GraphQL 查询的正文,并将其发送到您的 GraphQL API 服务器。
以下是一个简单的示例,演示如何使用 Fetch 发送 GraphQL 查询:
// 定义 GraphQL 查询
const query = `
query {
user(id: "12345") {
name
email
}
}
`;
// 使用 Fetch 发送 GraphQL 查询
fetch('/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
body: JSON.stringify({ query })
})
.then(response => response.json())
.then(data => console.log('data returned:', data));
在上面的示例中,我们首先定义了一个 GraphQL 查询字符串。然后,我们使用 Fetch 将查询字符串包装在 JSON 对象中,并将其发送到 /graphql 端点。在这个例子中,我们将使用 fetch() 函数来发送 POST 请求。
现在,您已经知道如何使用 Fetch 发送一个 GraphQL 查询。接下来,我们将看看如何在您的 React 应用程序中使用 Fetch 来调用 GraphQL API。
首先,让我们创建一个简单的 React 组件,它将使用 Fetch 调用 GraphQL API 并显示返回的数据。在这个例子中,我们将使用一个组件来显示一个特定用户的名称和电子邮件地址。
import React, { useState, useEffect } from 'react';
function User(props) {
const [user, setUser] = useState(null);
useEffect(() => {
fetch('/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
body: JSON.stringify({ query: `
query {
user(id: "${props.id}") {
name
email
}
}
` })
})
.then(response => response.json())
.then(data => setUser(data.data.user));
}, [props.id]);
return (
<div>
{user ? (
<div>
<h2>{user.name}</h2>
<p>{user.email}</p>
</div>
) : (
<p>Loading...</p>
)}
</div>
);
}
export default User;
在上面的示例中,我们定义了一个 User 组件,并使用了 useState 和 useEffect 钩子。在 useEffect 钩子中,我们使用 Fetch 发送一个 GraphQL 查询,并在数据返回后将其存储在组件的本地状态中。
返回的数据包含用户名和电子邮件地址,我们将它们渲染到页面上。如果数据尚未返回,则显示 "加载中..." 字符串。
现在,我们已经创建了一个 React 组件,可以使用它来在页面上显示一个特定用户的名称和电子邮件地址。在这个例子中,我们使用了一个简单的 App 组件来渲染 User 组件。
import React from 'react';
import User from './User';
function App() {
return (
<div>
<h1>React GraphQL Demo</h1>
<User id="12345" />
</div>
);
}
export default App;
在上面的示例中,我们引入 User 组件并将其呈现为 App 组件的子元素。我们还将 id 属性传递给 User 组件,让它知道需要获取的用户的 ID。
现在,您已经知道如何使用 Fetch 和 GraphQL 在 React 应用程序中调用 API。使用这种方法,您可以在组件中调用 GraphQL,以更好地管理应用程序的数据。