2016-02-26 14 views
0

我有这样的片段:在Relay中获取迭代节点变量并在getFragment中使用?

fragments: { 
    Viewer:() => Relay.QL` 
    fragment house on Viewer { 
     House(id:$id){ 
     id 
     baths 
     beds 
     built 
     city { 
      name 
     } 
     description 
     image 
     mls 
     price 
     street 
     type { 
      type 
     } 
     zip { 
      code 
     } 
     } 
    } 
    `, 
}, 

当我遍历列表中的房子边缘节点我想获得这个片段和重用:

Houses(city: $city, zip: $zip, type: $type, first: 20) { 
    edges { 
    node { 
     id 
     ${HousePage.getFragment('Viewer').getFragment('house')} 
    } 
    } 
} 

如何从获得ID节点和请求从另一个组件的房子片段?我花了4个小时..... OMG。

回答

0

如果我理解正确:

  • 你有一个对象类型命名House
  • 您有一个名为HousesConnection一个连接类型有型House

的节点在列表容器中:

class HouseList extends React.Component { 
    render() { 
    return this.props.viewer.Houses.edges.map(({node}) => 
     <House house={node} /> 
    ); 
    } 
} 

HouseList = Relay.createContainer(HouseList, { 
    fragments: { 
    viewer:() => Relay.QL` 
     fragment on Viewer { 
     Houses(city: $city, zip: $zip, type: $type, first: 20) { 
      edges { 
      node { 
       ${HousePage.getFragment('House')} 
      } 
      } 
     } 
     } 
    `, 
    }, 
}); 

House容器:

class House extends React.Component { 
    render() { 
    return <span>{this.props.house.mls}</span>; 
    } 
} 

House = Relay.createContainer(House, { 
    fragments: { 
    house:() => Relay.QL` 
     fragment on House { 
     id 
     baths 
     beds 
     built 
     city { 
      name 
     } 
     description 
     image 
     mls 
     price 
     street 
     type { 
      type 
     } 
     zip { 
      code 
     } 
     } 
    `, 
    }, 
});