如何获取变量值并传递给RelayMutation?

时间:2016-10-20 00:49:30

标签: relayjs relay 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,
            }
        }
    }];
}

}

Component

上的AcceptFunction
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 个答案:

答案 0 :(得分:0)

您正在错误地调用此突变。

您的变异变量应该与getVariables()上的输入字段匹配,同样也应该与接收变异上的输入字段匹配。

const mutation = new EventEditMutation({
  id: event,
  inviteAnswer: inviteAnswer,
});

getVariables不需要参数:

getVariables() {
    return {
        id: this.props.event.id,
        inviteAnswer: this.props.inviteAnswer,
    }
}