reactjs - 继电器 - 在查询之前设置变量

标签 reactjs relayjs graphql

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

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,
            }
          }
        },
        ...

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

componentWillMount = () => {
  let {relay} = this.props;
  relay.setVariables({
    studentId: this.props.member.id
  });
}

但是,这里的问题是,查询首先使用 initialVariables 中定义的 null 执行。我的后端实现具有这样的功能:如果 studentId 为 NULL,则它会返回所有成员的数据。

结果是上述查询执行两次,第一次使用所有成员,第二次使用给定的 memberId

这会扰乱我的 componentWillUpdate 中的其他内容。无论如何,我是否可以传递此变量并仅在第一个查询中获取该成员的数据?

谢谢。

最佳答案

通过路由向下传递变量,为您的应用程序准备好这些初始条件。

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'})}
/>

关于reactjs - 继电器 - 在查询之前设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35698582/

相关文章:

reactjs - React - <Input> 值未在 onChange 事件上更新

javascript - JSX 元素类不支持属性,因为它没有 'props' property.ts(2607)

pagination - 中继分页: How to initialize "after" value?

javascript - 使用 thunk 的 GraphQL 循环引用 - 错误 : field type must be Output Type but got: undefined

debugging - Apollo 客户端: How to simply debug a 400 code error?

reactjs - React History.push 允许用户在新选项卡中打开

javascript - 使用React、redux和react-redux-router进行登录验证: the proper way?

react-router - react-router-relay 的子路由查询错误

Github GraphQL API v.4.0 游标错误

javascript - 在 JavaScript 中的 Promise-aware for 循环内更新对象属性时出现问题