我正在尝试创建一个非常简单的ReactNative应用程序,以便在Android上使用GraphQL和RN(我已经熟悉它可以在iPhone上运行)。
但我遇到了问题 - 我的根组件向API发出get
请求。虽然当我启动XCode模拟器时该请求工作正常,但当我在手机上运行Android版本时它完全失败。
Android / iOS版本现在完全相同。这两个索引文件都使用
react-native-router-flux
并且相同,并且它们导入共享组件。
这是组件的简化代码:
constructor(props) {
super(props);
this.state = {
source: 'myGraphQLEndpoint'
}
}
componentDidMount() {
if (this.props.drill) { return null; }
this.serverRequest = fetch(this.state.source)
.then((result) => result.json())
.then((json) => {
this.setState({
drill: json.data.drill
});
});
}
componentWillUnmount() {
this.serverRequest.abort();
}
render() {
const { drill } = this.state;
if (!drill) { return null; }
... some view stuff
}
在我的iOS模拟器上,这非常有效。在我的Android手机上,它从不设置状态,因此不会超过if (!drill)
行。如果我直接将状态设置为预期的API数据(而不是进行实际调用),那么Android应用程序就可以正常工作(使用非实时数据)。
手机已连接到互联网。
知道什么是错的吗?
PS - 我尝试过多种变体,包括:
.then
,即response.json().data.drill
。 state
设置为等于(将状态设置为看似无法打印到的响应缓冲区[42, 36, ...
的响应缓冲区Index
屏幕。没有骰子。