中继createContainer renderFetched未将必需的props传递给组件

时间:2017-04-26 02:39:54

标签: react-native relay

我是继电器的新手,并且兴奋地使用它,但是我用我的代码卡住了差不多一天,并且不知道哪个有问题,这是非常简单的代码

这是我的查询路线

class UserRoute extends Route {
  static paramDefinitions = {
    userId: { required: true }
  };
  static queries = {
    user_by_id: () => Relay.QL`
      query {
        user_by_id(id: $userId)
      }
    `
  };
  static routeName = 'UserRoute';
}

这是我的组件

class UserInfo extends Component {
  render() {
    console.log('this.props.user', this.props.user_by_id);
    return (
      <Text>name: {this.props.user_by_id.name}</Text>
    )
  }
}

这是继电器容器

UserInfoRelay = Relay.createContainer(
  UserInfo,
  {
    fragments: {
      user_by_id: () => Relay.QL`
        fragment on User {
          name
        }
      `
    }
  }
)

这是我的根容器

<RootContainer
  Component={UserInfoRelay}
  route={new UserRoute({userId: 5})}
  renderFetched={(data) => <UserInfo {...this.props} {...data} />}
/>

返回的graphql查询是正确的

Log from my relay

然而,我没有得到所需的道具,这是&#34;名称&#34;

This is props i get from log

我做错了什么?谢谢你的任何帮助,对我而言,接力是有希望的,但跳进去是相当流血的☠️☠️☠️☠️☠️☠️☠️☠️

祝你有个美好的一天

1 个答案:

答案 0 :(得分:0)

解决方案是改变了这个

UserInfoRelay = Relay.createContainer(
  UserInfo,
  {
    fragments: {
      user_by_id: () => Relay.QL`
        fragment on User {
          name
        }
      `
    }
  }
)

进入

UserInfo = Relay.createContainer(
  UserInfo,
  {
    fragments: {
      user_by_id: () => Relay.QL`
        fragment on User {
          name
        }
      `
    }
  }
)
这确实有助于我获得所需的道具,但我不知道为什么,有人可以解释这个解决方案

干杯