首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用React Native进行中继工作

无法使用React Native进行中继工作
EN

Stack Overflow用户
提问于 2016-05-18 14:58:33
回答 2查看 713关注 0票数 9

我正在尝试设置一个基本的React Native Relay项目。我花了大量的时间尝试调试这个问题,但没有任何运气,所以我创建了这个问题。我在控制台上收到这个警告,我的react原生应用程序无法调用GraphQL服务器。

代码语言:javascript
复制
Warning: RelayNetworkLayer: Call received to injectImplementation(), but a layer was already injected.


Running application "ExampleApp" with appParams: {"rootTag":1,"initialProps":{}}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF

fetchWithRetries(): Still no successful response after 1 retries, giving up.

以下是我的代码

index.ios.js

代码语言:javascript
复制
import React, { Component } from 'react';
import Relay from 'react-relay';

import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';
import App from './app';
import AppRoute from './route/appRoute';

Relay.injectNetworkLayer(
  new Relay.DefaultNetworkLayer("http://localhost:1337/graphy")
);

class ExampleApp extends Component {
  render() {
    return (
      <Relay.RootContainer
        Component={App}
        route={new AppRoute()}
      />
    );
  }
}

AppRegistry.registerComponent('ExampleApp', () => ExampleApp);

appRoute.js

代码语言:javascript
复制
'use strict';

import Relay from 'react-relay';

export default class extends Relay.Route {
  static queries = {
    page: (Component) => Relay.QL`
      query {
        posts(offset: 0) { ${Component.getFragment('page')} }
      }
    `,
  };

  static routeName = 'AppRoute';
}

app.js

代码语言:javascript
复制
'use strict';

import React, {Component} from 'react';
import Relay from 'react-relay';

import {
  View,
  Text,
} from 'react-native';

class App extends Component {

  render() {
    console.log('props', this.props);
    return(
     <View>
      <Text>Testing</Text>
     </View>
    );
  }
}


export default Relay.createContainer(App, {
  fragments: {
    page: () => Relay.QL`
      fragment on Viewer {
        posts { id, title }
      }
    `,
  }
});

package.json

代码语言:javascript
复制
{
  "name": "ExampleApp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start"
  },
  "dependencies": {
    "babel": "^6.5.2",
    "babel-preset-react-native": "^1.8.0",
    "babel-relay-plugin": "^0.8.1",
    "react": "^0.14.8",
    "react-native": "^0.25.1",
    "react-relay": "^0.8.1"
  }
}

babelRelayPlugin.js

代码语言:javascript
复制
const getBabelRelayPlugin = require('babel-relay-plugin');
const schema = require('../schema.json');

module.exports = { plugins: [getBabelRelayPlugin(schema.data)] };

这是完整的回购链接:https://github.com/popstand/react-native-relay-graphql-example

用ReactJS和Relay构建的类似代码在网页上运行良好。我无法让它在React Native上工作。是什么地方出了问题,导致了这个问题?

EN

回答 2

Stack Overflow用户

发布于 2016-05-28 14:45:06

我建议您可以查看一下F8 App by Facebook。肯定有一个setup script,一个main route,一个relay containera schema可以看到。

票数 2
EN

Stack Overflow用户

发布于 2017-03-21 04:21:01

可能是您的GraphQL服务器返回了错误的响应。这发生在我身上,我通过调试服务器(使用this)解决了这个问题。

您可以在https://github.com/danielfeelfine/react-native-relay中查看此示例应用程序的代码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37292331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档