JavaScript 和 ReactJs
JavaScript and ReactJs
我有单独的 js 文件调用 api.js 并且我在那里定义了一个函数
FetchDetails = function auth() {
return {
initialize: function() {
var deferredObject = $.Deferred();
var config = {
'client_id': '',my client id
'scope': 'https://www.google.com/m8/feeds'
};
gapi.auth.authorize(config, function () {
var token = gapi.auth.getToken();
var contacts = {
contact: []
};
var name;
var friends;
$.ajax({
url: "https://www.google.com/m8/feeds/contacts/default/full?access_token=" + token.access_token + "&alt=json&max-results=3000",
dataType: "json",
success: function (data) {
var json_res = JSON.stringify(data);
var response_as_array = jQuery.parseJSON(json_res);
for (var i = 0; i < response_as_array['feed']['entry'].length; i++) {
name = response_as_array['feed']['entry'][i]['title']['$t'] != null ? response_as_array['feed']['entry'][i]['title']['$t'] : null;
if (response_as_array['feed']['entry'][i]['gd$email'] != null && name != null && name != "") {
contacts.contact.push({
"fullName" : name,
"email" : response_as_array['feed']['entry'][i]['gd$email'][0]['address']
});
}
}
deferredObject.resolve(contacts);
}
});
});
return deferredObject.promise();
}
};
}
我需要在我的 .jsx 文件 handleClick() 方法中调用此函数。你可以在下面看到 .jsx 文件
import { Component, PropTypes } from 'react';
export default class FriendRight extends Component {
handleClick() {
require ('../api_call/apis.js');
FetchDetails().initialize().then(function(results) {
this.setState({
contacts: results.contact
});
}.bind(this));
}
render(){
return(
<div><ul class="list-group">
<li className="list-group-item"><button type="button" className="btn btn-default" onClick={this.handleClick}>Yahoo</button></li>
<li className="list-group-item"><button type="button" className="btn btn-default">Gmail</button></li>
<li className="list-group-item"><button type="button" className="btn btn-default" >Outlook</button></li>
<li className="list-group-item"><button type="button" className="btn btn-default" >Facebook</button></li>
</ul>
</div>
);
}
}
调用此函数时出现此错误
未捕获的引用错误:未定义 FetchDetails
您需要导出和导入 FetchDetails
,例如在您的 api.js 模块中:
export const FetchDetails = function auth() { // ...
并在您的 jsx 文件中:
import { FetchDetails } from './api.js';
我假设api.js和jsx文件在同一个目录下,否则你需要在导入语句中提供相对路径。
我有单独的 js 文件调用 api.js 并且我在那里定义了一个函数
FetchDetails = function auth() {
return {
initialize: function() {
var deferredObject = $.Deferred();
var config = {
'client_id': '',my client id
'scope': 'https://www.google.com/m8/feeds'
};
gapi.auth.authorize(config, function () {
var token = gapi.auth.getToken();
var contacts = {
contact: []
};
var name;
var friends;
$.ajax({
url: "https://www.google.com/m8/feeds/contacts/default/full?access_token=" + token.access_token + "&alt=json&max-results=3000",
dataType: "json",
success: function (data) {
var json_res = JSON.stringify(data);
var response_as_array = jQuery.parseJSON(json_res);
for (var i = 0; i < response_as_array['feed']['entry'].length; i++) {
name = response_as_array['feed']['entry'][i]['title']['$t'] != null ? response_as_array['feed']['entry'][i]['title']['$t'] : null;
if (response_as_array['feed']['entry'][i]['gd$email'] != null && name != null && name != "") {
contacts.contact.push({
"fullName" : name,
"email" : response_as_array['feed']['entry'][i]['gd$email'][0]['address']
});
}
}
deferredObject.resolve(contacts);
}
});
});
return deferredObject.promise();
}
};
}
我需要在我的 .jsx 文件 handleClick() 方法中调用此函数。你可以在下面看到 .jsx 文件
import { Component, PropTypes } from 'react';
export default class FriendRight extends Component {
handleClick() {
require ('../api_call/apis.js');
FetchDetails().initialize().then(function(results) {
this.setState({
contacts: results.contact
});
}.bind(this));
}
render(){
return(
<div><ul class="list-group">
<li className="list-group-item"><button type="button" className="btn btn-default" onClick={this.handleClick}>Yahoo</button></li>
<li className="list-group-item"><button type="button" className="btn btn-default">Gmail</button></li>
<li className="list-group-item"><button type="button" className="btn btn-default" >Outlook</button></li>
<li className="list-group-item"><button type="button" className="btn btn-default" >Facebook</button></li>
</ul>
</div>
);
}
}
调用此函数时出现此错误
未捕获的引用错误:未定义 FetchDetails
您需要导出和导入 FetchDetails
,例如在您的 api.js 模块中:
export const FetchDetails = function auth() { // ...
并在您的 jsx 文件中:
import { FetchDetails } from './api.js';
我假设api.js和jsx文件在同一个目录下,否则你需要在导入语句中提供相对路径。