Cam*_*lla 6 reactjs apollo-client aws-appsync aws-amplify-sdk-js
在我正在进行的一个新项目中,我们正在研究将 AppSync 用于我们的 GraphQL 服务器(使用 Amplify)。但是,由于它依赖于旧版本的 Apollo Client (2.4.6),并且 Apollo Client 在 3.0 版本中引入了重大更改,因此使用 AwsAppSyncClient 并不是最佳选择。我们也不能等待 AppSync 迁移到 Apollo Client 3.0,所以我想知道现在是否最好将自定义客户端与 Apollo Client 3.0 一起使用,并在他们的 Apollo 依赖项迁移到 3.0 后迁移到 AwsAppSyncClient。这是一个好主意吗?可以在下面找到当前的实现。然而,这带来了一些新问题。
(这是我关于 Stack Overflow 的第一个问题,所以希望这不是一次太多!)
我已经做了一些研究,但我对 GraphQL、Apollo、AppSync 和 Amplify 的主题仍然很陌生,所以我认为最好向那里的专家咨询!
(不知道我是否应该为此创建一个单独的问题?)
queries.js和mutations.js文件,每个模型仅使用“基本”查询,包括所有字段;很像 REST 调用。为什么要这样做,以及如何从客户端使用它?将 AppSync 与自定义客户端 (Apollo Client 3.0) 结合使用
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import Amplify from "aws-amplify";
import {
ApolloProvider,
ApolloClient,
ApolloLink,
createHttpLink,
InMemoryCache,
makeVar
} from "@apollo/client";
import { createAuthLink } from "aws-appsync-auth-link";
import awsExports from "./aws-exports";
Amplify.configure(awsExports);
const sidebarCollapsedVar = makeVar(false);
const link = ApolloLink.from([
createAuthLink({
url: awsExports.aws_appsync_graphqlEndpoint,
region: awsExports.aws_appsync_region,
auth: {
type: awsExports.aws_appsync_authenticationType,
apiKey: awsExports.aws_appsync_apiKey,
},
}),
createHttpLink({ uri: awsExports.aws_appsync_graphqlEndpoint }),
]);
const client = new ApolloClient({
link,
cache: new InMemoryCache({
typePolicies: {
Query: {
fields: {
sidebarCollapsed: {
read() {
return sidebarCollapsedVar();
},
},
},
},
},
}),
});
ReactDOM.render(
<React.StrictMode>
<ApolloProvider client={client}>
<App />
</ApolloProvider>
</React.StrictMode>,
document.getElementById("root")
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
920 次 |
| 最近记录: |