Chr*_*ris 7 reactjs graphql relayjs
我目前正在处理一个页面,该页面显示特定用户的某组"任务"的状态.要获取数据,我有以下中继容器:
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,
}
}
},
...
Run Code Online (Sandbox Code Playgroud)
要定义我想从哪个用户获取数据,我使用:
componentWillMount = () => {
let {relay} = this.props;
relay.setVariables({
studentId: this.props.member.id
});
}
Run Code Online (Sandbox Code Playgroud)
但是,这里的问题是查询首先null按照中的定义执行initialVariables.我的后端实现有它,如果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'})}
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |