2017-04-26 46 views
0

我是新來的接力,並興奮地與它一起工作,但是我用我的代碼卡住了差不多一天,並且不知道哪個有問題,它非常簡單代碼繼電器createContainer renderFetched沒有通過所需的道具到組件

這裏是我的查詢途徑

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

但是我沒有得到想要的道具這是 「名」

This is props i get from log

我做錯了什麼?感謝您的幫助,對我來說繼電器很有前途,但跳進相當出血☠️☠️☠️☠️☠️☠️☠️☠️

有一個好的一天

回答

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 
     } 
     ` 
    } 
    } 
) 

這確實幫助我獲得所需的道具,但我不知道爲什麼,有人可以解釋這個解決方案

乾杯

相關問題