【发布时间】:2016-08-20 01:36:01
【问题描述】:
我有以下突变:
export default class AddTaskMutation extends Relay.Mutation {
static fragments = {
classroom: () => Relay.QL`
fragment on Classroom {
id,
}`,
};
getMutation() {
return Relay.QL`mutation { addTask }`;
}
getFatQuery() {
return Relay.QL`
fragment on AddTaskPayload {
classroom {
taskList,
},
taskEdge,
}
`;
}
getConfigs() {
let rangeBehaviors = {};
let member_id = 'hasNewMessages(true) member_id(' + Global.fromGlobalId(this.props.createdByMember)['id'] + ')';
rangeBehaviors[''] = 'append';
rangeBehaviors['hasToDo(true)'] = 'append';
rangeBehaviors['hasToDo(false)'] = 'append';
rangeBehaviors['isStart(true)'] = 'ignore';
rangeBehaviors['isStart(false)'] = 'append';
rangeBehaviors[`${member_id}`] = 'append';
rangeBehaviors['hasNewMessages(true) member_id(null)'] = 'ignore';
return [
{
type: 'RANGE_ADD',
parentName: 'classroom',
parentID: this.props.classroomId,
connectionName: 'taskList',
edgeName: 'taskEdge',
rangeBehaviors,
}
];
}
getVariables() {
return {
title: this.props.title,
instruction: this.props.instruction,
start_date: this.props.start_date,
end_date: this.props.end_date,
is_archived: this.props.is_archived,
is_published: this.props.is_published,
is_preview: this.props.is_preview,
productId: this.props.productId,
classroomId: this.props.classroomId,
createdByMember: this.props.createdByMember,
subTasks: this.props.subTasks,
students: this.props.students,
};
}
}
运行我的应用程序时,我收到以下 2 个警告:
warning.js:44 警告:RelayMutation:突变字段
classroom上与 IDClassroom:35对应的连接taskList{hasNewMessages:true,member_id:null}与您的 RANGE_ADD 配置中指定的任何rangeBehaviors都不匹配。这意味着将重新获取整个连接。为此突变配置范围行为,以便仅获取新边缘并启用乐观突变或使用refetch消除此警告。
和
warning.js:44 警告:不推荐使用
null作为 rangeBehavior 值。使用ignore避免重新获取范围。
由于另一个 rangeBehaviors 工作,我假设在一个行为中声明 2 个变量时一定存在语法错误 - 在本例中为 hasNewMessages 和 memeber_id。
我已经为此寻找答案,但我找不到任何答案。文档似乎也没有涵盖这种极端情况。
编辑:我也试过rangeBehaviors['hasNewMessages(true),member_id(null)'] = 'ignore';(逗号作为分隔符)但没有成功。
【问题讨论】: