reactjs - TypeError:无法读取未定义的属性(读取“加载”)
问题描述
大家好,提前感谢您的帮助。我一直在玩 React 和 Goole sheet api。据我所知,我认为大部分工作都按照我的想法进行,但出现了上述错误。
代码:
/* global gapi */
import React from 'react';
import './App.css';
import {Link} from 'react-router-dom'
class CreateAccount extends React.Component {
state = {
username:"none",
password:"none",
email:"none"
}
acctHandleUserNameChange = event =>{
this.setState({
username: event.target.value
})
}
acctHandlePasswordChange = event =>{
this.setState({
pasword: event.target.value
})
}
acctEmailChange = event =>{
this.setState({
email: event.target.value
})
}
makeApiCall() {
var params = {
spreadsheetId: 'xxxxxxxxxxxxxxxxxxxxxx',
range: 'A1:A3',
valueInputOption: 'USER_ENABLED',
insertDataOption: 'INSERT_ROWS',
};
var valueRangeBody = {
"values": [
[
this.state.username,
this.state.password,
this.state.email
]
]
};
var request = gapi.client.sheets.spreadsheets.values.append(params, valueRangeBody);
request.then(function(response) {
// TODO: Change code below to process the `response` object:
console.log(response.result);
}, function(reason) {
console.error('error: ' + reason.result.error.message);
});
}
initClient() {
var API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxx';
var CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxxxgxxx'; //
// TODO: Authorize using one of the following scopes:
// 'https://www.googleapis.com/auth/drive'
// 'https://www.googleapis.com/auth/drive.file'
// 'https://www.googleapis.com/auth/spreadsheets'
var SCOPE = 'www.googleapis.com/auth/spreadsheets';
gapi.client.init({
'apiKey': API_KEY,
'clientId': CLIENT_ID,
'scope': SCOPE,
'discoveryDocs': ['https://sheets.googleapis.com/$discovery/rest?version=v4'],
}).then(function() {
gapi.auth2.getAuthInstance().isSignedIn.listen(this.updateSignInStatus());
this.updateSignInStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
});
}
handleClientLoad() {
window.gapi.load('client:auth2', this.initClient());
}
updateSignInStatus(isSignedIn) {
if (isSignedIn) {
this.makeApiCall();
}
}
handleSignInClick(event) {
gapi.auth2.getAuthInstance().signIn();
}
handleSignOutClick(event) {
gapi.auth2.getAuthInstance().signOut();
}
handleCreateAccount(){
console.log("test Start");
this.handleClientLoad();
console.log("test end");
}
render(){
return (
<div>
<p>
<input type="text" placeholder="Enter username" onChange={event => this.acctHandleUserNameChange(event)}></input>
</p>
<p>
<input type="text" placeholder="Enter password" onChange={event => this.acctHandlePasswordChange(event)}></input>
</p>
<p>
<input hint="email" placeholder="Enter email" type="text" onChange={event => this.acctEmailChange(event)}></input>
</p>
<p>
<button onClick={()=>this.handleCreateAccount()}>Create</button>
</p>
<p>
<Link to="/">
<button>Back</button>
</Link>
</p>
</div>
);
}
}
export default CreateAccount;
有问题的代码部分是不允许加载的 handleClientLoad()
解决方案
推荐阅读
- javascript - Chrome 扩展发送多个帖子请求
- web-services - 将 Web 应用程序部署到 localhost 中的 Web Logic,如何通过邮递员调用该应用程序?
- android - 如何通过改造解析 json 文件中的索引
- python - 如何从 BeautifulSoup 中的 onclickvalue 获取链接?
- c - 为什么这个程序给变量 j 分配了一个奇怪的数字?
- reactjs - React-Table 的 ReactJs 刷新问题
- php - Woocommerce 通过提交订单以编程方式设置发货
- linux - 查找超过 x 天的文件,然后在删除它们之前输出它们的名称和大小
- lua - 如何在魔兽世界的任务日志中获取特定任务的名称?
- wordpress - Wordpress 自定义帖子类型和自定义用户角色