Javascript 如何使用GraphQL和React Native从GitHub获取您的名字?
我正在尝试使用GraphQL和React Native获取我的GitHub用户名。我一直收到错误“对象作为React子对象无效”。我尝试声明一个数组并将结果附加到该数组,但我只得到一个空数组。因此,我不能100%确定是否正确获取数据。我还试着在mainFunction()以及在互联网上找到的所有建议解决方案周围加上花括号,但似乎都不起作用。我怎样才能让它工作Javascript 如何使用GraphQL和React Native从GitHub获取您的名字?,javascript,function,react-native,rendering,Javascript,Function,React Native,Rendering,我正在尝试使用GraphQL和React Native获取我的GitHub用户名。我一直收到错误“对象作为React子对象无效”。我尝试声明一个数组并将结果附加到该数组,但我只得到一个空数组。因此,我不能100%确定是否正确获取数据。我还试着在mainFunction()以及在互联网上找到的所有建议解决方案周围加上花括号,但似乎都不起作用。我怎样才能让它工作 import React, { Component } from 'react'; import { Text, View } from
import React, { Component } from 'react';
import { Text, View } from 'react-native';
import { Navigation } from 'react-native-navigation';
import { ApolloClient } from 'apollo-boost';
var asynchronousFunction = async () => {
var response = await fetch('https://api.github.com/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'bearer ' + {TOKEN},
},
body: '{ "query": "{ viewer { name } } "}',
});
return response;
};
var mainFunction = async () => {
var result = await asynchronousFunction();
return result;
};
(async () => {
console.log(await mainFunction());
})();
class Example extends Component {
render() {
return (
<View>
<Text>{JSON.stringify(mainFunction())}</Text>
</View>
);
}
}
export default Example;
import React,{Component}来自'React';
从“react native”导入{Text,View};
从“react native Navigation”导入{Navigation};
从“apollo boost”导入{apollo客户端};
var asynchronousFunction=async()=>{
var response=wait fetch('https://api.github.com/graphql', {
方法:“POST”,
标题:{
“内容类型”:“应用程序/json”,
'Authorization':'bearer'+{TOKEN},
},
正文:“{”查询“{viewer{name}}”}”,
});
返回响应;
};
var mainFunction=async()=>{
var result=等待异步函数();
返回结果;
};
(异步()=>{
log(wait main function());
})();
类示例扩展组件{
render(){
返回(
{JSON.stringify(mainFunction())}
);
}
}
导出默认示例;
问题就在这里
render() {
return (
mainFunction()
);
}
main函数的return语句不是react组件,因此它将始终是一个对象,因此您应该使用JSON stringify显示在文本中
像下面这样
render() {
return (
<View><Text>{JSON.stringify(mainFunction())}</Text></View>
);
}
render(){
返回(
{JSON.stringify(mainFunction())}
);
}
最好是有一个状态并在收到响应后更新它,这是在响应时的最佳实践尝试以下操作:
'Authorization':“bearer”+{TOKEN}
和主体:“{\'query\”:\“{viewer{name}}”
嘿,我已经用你的建议更新了代码,但我的结果仍然只是返回一个空数组。您还看到了什么错误吗?console.log(response)
在返回响应之前给了您什么?您是否按照流程第一次点击https://github.com/login/oauth/authorize
然后从这里获得令牌https://github.com/login/oauth/access_token
?另外,保留您需要转义的引号,如:body:“{\”query\”:“{viewer{name}}\”}”
嘿,谢谢您指出这一点!我已经用建议的内容更新了代码,不再得到“对象作为React子对象无效”。但是,我仍然没有得到任何实际结果,就像我的结果只是一个空数组。最好检查graphql查询,尝试登录,而不是名称。我与资源管理器一起检查,这是请求的主体。最好尝试一下{“查询”:“查询{viewer{name}}”,“变量”:{}