首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Relay -在查询前设置变量

Relay -在查询前设置变量
EN

Stack Overflow用户
提问于 2016-02-29 19:38:59
回答 1查看 1.4K关注 0票数 7

我目前正在开发一个页面,该页面显示特定用户的一组“任务”的状态。为了获取数据,我有以下Relay容器:

代码语言:javascript
复制
export default Relay.createContainer(TaskReview, {
  initialVariables: {
    limit: Number.MAX_SAFE_INTEGER,
    studentId: null,
  },
  fragments: {
    task: () => Relay.QL`
      fragment on Task {
        id,
        title,
        instruction,
        end_date,
        taskDataList(first: $limit, type: "subTasks", member: $studentId) {
          edges {
            node {
              id,
              answer,
              completion_date,
            }
          }
        },
        ...

为了定义我想要从哪个用户获取数据,我使用:

代码语言:javascript
复制
componentWillMount = () => {
  let {relay} = this.props;
  relay.setVariables({
    studentId: this.props.member.id
  });
}

但是,这里的问题是查询首先是使用initialVariables中定义的null执行的。在我的后端实现中,如果studentId为NULL,那么它将返回所有成员的数据。

结果是上面的查询执行两次,第一次对所有成员执行,第二次对给定的memberId执行。

这会打乱我componentWillUpdate中的其他东西。有没有什么办法我可以传递这个变量,并且只在第一次查询时获得该成员的数据?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-03-09 23:14:09

通过在路径中向下传递您的变量,为您的应用程序提供这些初始条件。

代码语言:javascript
复制
class TaskReviewRoute extends Relay.Route {
  static paramDefinitions = {
    studentId: {required: true},
  };
  static queries = {
    task: () => Relay.QL`query { ... }`,
  };
  static routeName = 'TaskReviewRoute';
}

<Relay.RootContainer
  Container={TaskReview}
  route={new TaskReviewRoute({studentId: '123'})}
/>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35698582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档