我正在尝试完成RelayMutation。我有一个问题。
我正在尝试将变量值传递给我的RelayMutation但是我无法做到。
我的目标:当我按下Accept时,取出inviteAnswer变量并将其作为输入传递给我的RelayMutation。
现在,我只是将inviteAnswer作为“未定义”。
RelayMutation.js(EventEditMutation.js)
import Relay from 'react-relay';
export default class EventEditMutation extends Relay.Mutation {
static fragments = {
event: () => Relay.QL`
fragment on Event {
id
guests {
user
status
}
},
`,
};
getVariables(inviteAnswer) {
console.log(inviteAnswer);
return {
id: this.props.event.id,
inviteAnswer: true,
}
}
getMutation() {
return Relay.QL`mutation {
EventEdit,
}`;
}
getFatQuery() {
return Relay.QL`
fragment on EventEditPayload {
Event {
guests
}
}
`;
}
getConfigs() {
return [{
type: 'FIELDS_CHANGE',
fieldIDs: {
Event: {
guests: this.props.event.guests,
}
}
}];
}
}
Component
上的AcceptFunctionaccept = () => {
const inviteAnswer = true; <<<--- I want this value here!
console.log(inviteAnswer);
const { event } = this.props.viewer;
console.log(event);
const mutation = new EventEditMutation({
event: event,
inviteAnswer: inviteAnswer,
});
console.log(inviteAnswer)
const callbacks = {
onSuccess: (payload) => {
console.log('success: ', payload);
},
onFailure: (err) => {
console.log('failure: ', err);
},
};
RelayStore.commitUpdate(mutation, callbacks);
Actions.chat({eventId: event.id});
};
我的GraphqlMutation(EventEditMutation)的输入字段
export default mutationWithClientMutationId ({
name: 'EventEdit',
inputFields:{
id: {
type: new GraphQLNonNull(GraphQLID)
},
inviteAnswer: {
type: GraphQLBoolean,
}
},
如果你们能帮助我,我感激不尽。谢谢!此外,如果您认为有更好的方法,请告诉我。
答案 0 :(得分:0)
您正在错误地调用此突变。
您的变异变量应该与getVariables()上的输入字段匹配,同样也应该与接收变异上的输入字段匹配。
const mutation = new EventEditMutation({
id: event,
inviteAnswer: inviteAnswer,
});
getVariables不需要参数:
getVariables() {
return {
id: this.props.event.id,
inviteAnswer: this.props.inviteAnswer,
}
}