将参数从中继路由器传递到组件

时间:2015-11-26 04:19:00

标签: relayjs

在Relay中,如何将路径参数传递给组件?

我有这条路线:

import Relay from 'react-relay'

export default class ConversationRoute extends Relay.Route {
  static queries = {
    account: (Component) => Relay.QL`
      query root {
        account {
          ${Component.getFragment('account')}
        }
      }
    `
  }

  static paramDefinitions = {
    conversationId: {required: true}
  }

  static routeName = 'ConversationRoute'
}

这个组成部分:

class CommentListApp extends React.Component {
  render() {
    let account = this.props.account
    if (!account) return <div />
    return <CommentList comments={account.conversation.comments} />
  }
}

export default Relay.createContainer(CommentListApp, {
  initialVariables: {
    conversationId: null
  },

  fragments: {
    account: () => Relay.QL`
      fragment on Account {
        conversation(id: $conversationId) @include(if: $conversationId) {
          comments {
            ${CommentList.getFragment('comments')}
          }
        }
      }
    `
  }
})

但这不起作用。 conversationId参数未传递到组件中。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您的查询应该是:

static queries = {
  account: (Component, params) => Relay.QL`
    query root {
      account {
        ${Component.getFragment('account', params)},
      },
    }
  `,
}

请注意,在您的情况下,您可以使用简写查询语法。

static queries = {
  account: () => Relay.QL`query { account }`,
}