【问题标题】:Get iteration node variable in Relay and use inside getFragment?在Relay中获取迭代节点变量并在getFragment中使用?
【发布时间】:2016-06-10 07:54:14
【问题描述】:

我有这样的片段:

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。

【问题讨论】:

    标签: react-router relayjs relay


    【解决方案1】:

    如果我理解正确:

    • 你有一个名为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
            }
          }
        `,
      },
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      相关资源
      最近更新 更多