我目前正在开发一个页面,该页面显示特定用户的一组“任务”的状态。为了获取数据,我有以下Relay容器:
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中的其他东西。有没有什么办法我可以传递这个变量,并且只在第一次查询时获得该成员的数据?
谢谢。
发布于 2016-03-09 23:14:09
通过在路径中向下传递您的变量,为您的应用程序提供这些初始条件。
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'})}
/>https://stackoverflow.com/questions/35698582
复制相似问题