【发布时间】:2016-06-12 10:26:16
【问题描述】:
我目前正在处理一个页面,该页面显示特定用户的一组特定“任务”的状态。为了获取数据,我有以下中继容器:
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
});
}
但是,这里的问题是查询首先使用null 执行,如initialVariables 中定义的那样。我的后端实现有它,如果studentId 为NULL,那么它返回所有成员的数据。
结果是上面的查询执行了两次,第一次是所有成员,第二次是给定的memberId。
这与我的 componentWillUpdate 中的其他内容混淆了。无论如何我可以传递这个变量并且只在第一个查询中获取该成员的数据吗?
谢谢。
【问题讨论】: