通过在 HTML 标头中包含官方 Google 客户端 API,您走在正确的轨道上。这不太理想——如果谷歌提供(浏览器)客户端 API 作为 npm module,那将会很好import
。但他们没有(我看到的),所以我认为你在做什么很好。
然后是“我如何以一种对 React/Redux 友好的方式使用它”的问题?Redux 是一种管理应用程序状态的机制。Google API 不是您的应用程序的一部分(尽管您对它的操作可能会通知您应用程序的状态)。
很容易验证您是否有权访问 Google API:您只需从componentDidMount
您的一个组件的方法中进行调用,然后执行控制台日志:
class MyComp extends React.Component {
componentDidMount() {
// this is taken directly from Google documentation:
// https://developers.google.com/api-client-library/javascript/start/start-js
function start() {
// 2. Initialize the JavaScript client library.
gapi.client.init({
'apiKey': 'YOUR_API_KEY',
// clientId and scope are optional if auth is not required.
'clientId': 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
'scope': 'profile',
}).then(function() {
// 3. Initialize and make the API request.
return gapi.client.request({
'path': 'https://people.googleapis.com/v1/people/me',
})
}).then(function(response) {
console.log(response.result);
}, function(reason) {
console.log('Error: ' + reason.result.error.message);
});
};
// 1. Load the JavaScript client library.
gapi.load('client', start);
},
}
如果您没有在控制台上看到您所期望的内容,那么不知何故gapi
没有按您的预期加载。如果发生这种情况,您可以提出更具体的问题!
如果您确实得到了响应,那么您现在知道如何调用 GAPI……但是如何以对 Redux 友好的方式使用它呢?
当您进行 GAPI 调用时,您可能希望以某种方式修改应用程序的状态(否则为什么要这样做?)例如,您可能会调用身份验证流程,当 GAPI 返回成功时,您的应用程序状态现在具有loggedIn: true
或类似(可能还有许多其他状态变化)。在何处进行 GAPI 调用取决于您。如果你想在组件加载时执行,你应该在componentDidMount
. 您还可能通常会发出 GAPI 调用以响应用户操作,例如单击按钮。
所以典型的流程是这样的:
// either in componentDidMount, or a control handler, usually:
someGapiCall()
.then(result => {
this.props.onGapiThing(result.whatever)
})
哪里this.props.onGapiThing
是一个函数,它调度一个适当的动作,它修改你的应用程序状态。
我希望这个概述有帮助...请随时跟进更具体的问题。