javascript-一旦外部js文件加载,React-仅运行文件(未定义gapi)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-一旦外部js文件加载,React-仅运行文件(未定义gapi),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2001字,纯文字阅读大概需要3分钟。
内容图文
![javascript-一旦外部js文件加载,React-仅运行文件(未定义gapi)](/upload/InfoBanner/zyjiaocheng/684/f7e67afe2f49400197b0ccaae0f422ad.jpg)
我正在尝试将Gmail API与React.js一起使用.
我不断收到错误“未定义gapi”.我相信我的mail.js文件运行后会加载HTML中的client.js文件吗?
我该如何解决?
Index.html
...
<script src="https://apis.google.com/js/client.js"></script>
Index.js
import './Mail.js';
Mail.js
import { createAction, handleActions } from 'redux-actions'
const CLIENT_ID = '1.apps.googleusercontent.com'
const SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
export const SET_GMAIL_CREDENTIALS = 'SET_GMAIL_CREDENTIALS'
export const CHANGE_LOADING = 'CHANGE_LOADING'
export const SET_GMAIL_LABELS = 'SET_GMAIL_LABELS'
export const SELECT_GMAIL_LABEL = 'SELECT_GMAIL_LABEL'
export const SET_GMAIL_EMAILS = 'SET_GMAIL_EMAILS'
let defaultState = {
profile: {
emailAddress: ''
},
loading: true,
labels: [],
currentLabel: null,
emails: []
}
export const connect = () => {
return (dispatch, getState) => {
dispatch(turnLoadingOn())
gmailAuth(false, populateCredentials(dispatch), clearCredentials(dispatch))
}
}...
解决方法:
我想你是正确的.我处理这些情况的方式是通过从React加载外部JS文件并在promise中使用它.
因此,您的流程应如下所示:
>反应应用程序负载
> React应用程序将您的文件注入HTML
>在步骤2的回调或.then()中执行您的操作
创建一个辅助函数.将其放在helpers / load-script之类的文件夹中.以下是该文件中应包含的所有代码:
export default function loadScript(url, cb) {
var scr = document.createElement('script');
scr.type = 'text/javascript';
if (scr.readyState) { // IE
scr.onreadystatechange = function() {
if (scr.readyState ==`loaded' || scr.readyState ==='complete') {
scr.onreadystatechange = null;
cb();
}
};
} else { // Others
scr.onload = cb;
}
script.src = url;
document.getElementsByTagName('head')[0].appendChild(scr);
}
接下来,将该函数导入要使用的组件中:
import React from 'react';
import loadScript from 'helpers/load-script';
class testComponent extends React.Component {
componentDidMount() {
loadScript('https://apis.google.com/js/client.js', () => {
// do mail api stuff here
});
}
render() {
return (
<div>hi there</div>
);
}
}
export default testComponent;
内容总结
以上是互联网集市为您收集整理的javascript-一旦外部js文件加载,React-仅运行文件(未定义gapi)全部内容,希望文章能够帮你解决javascript-一旦外部js文件加载,React-仅运行文件(未定义gapi)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。