Javascript 如何使用GraphQL和React Native从GitHub获取您的名字?

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

我正在尝试使用GraphQL和React Native获取我的GitHub用户名。我一直收到错误“对象作为React子对象无效”。我尝试声明一个数组并将结果附加到该数组,但我只得到一个空数组。因此,我不能100%确定是否正确获取数据。我还试着在mainFunction()以及在互联网上找到的所有建议解决方案周围加上花括号,但似乎都不起作用。我怎样才能让它工作

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}}”,“变量”:{}