#relayjs #relay #graphql-js
#relayjs #реле #graphql-js
Вопрос:
Я пытаюсь завершить 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,
}
}
}];
}
}
Acceptфункция для компонента
accept = () => {
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,
}
},
Я ценю, если вы, ребята, могли бы мне помочь. Спасибо! Кроме того, если вы считаете, что есть лучший способ сделать это, пожалуйста, дайте мне знать.
Комментарии:
1. Проблема решена?
Ответ №1:
Вы неправильно вызываете мутацию.
Ваша переменная мутации должна соответствовать полям ввода в getVariables(), а также полям ввода в принимающей мутации.
const mutation = new EventEditMutation({
id: event,
inviteAnswer: inviteAnswer,
});
И getVariables не нужно принимать аргумент:
getVariables() {
return {
id: this.props.event.id,
inviteAnswer: this.props.inviteAnswer,
}
}
Комментарии:
1. Ok Alexi2. Я ценю ваши мысли. Проблема в том, что InviteAnswer может быть true или false.
2. Когда вы принимаете событие, это правда. Когда вы отрицаете, это false.
3. Тот способ, который вы предлагаете, будет работать, только если InviteAnswer имеет значение true. Вы понимаете суть?
4. Это из вашего OP. Если вы хотите захватить переменную, используйте this.props.inviteAnswer