【问题标题】:How to get a variable value and Pass inside a RelayMutation?如何获取变量值并在 RelayMutation 中传递?
【发布时间】:2017-03-01 19:46:39
【问题描述】:

我正在尝试完成 RelayMutation。我遇到了一个问题。

我正在尝试将变量值传递给我的 RelayMutation 但我无法做到。

我的目标:当我按下 Accept 时,获取inviteAnswer 变量并将其作为输入传递给我的 RelayMutation。

现在,我只是将邀请答案设为“未定义”。

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,
            }
        }
    }];
}

}

组件上的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) 的 InputFields

export default mutationWithClientMutationId ({
name: 'EventEdit',
inputFields:{
        id: {
            type: new GraphQLNonNull(GraphQLID)
        },
        inviteAnswer: {
            type: GraphQLBoolean,
        }
    },

如果你们能帮助我,我将不胜感激。谢谢!另外,如果您认为有更好的方法,请告诉我。

【问题讨论】:

  • 问题解决了吗?

标签: relayjs relay graphql-js


【解决方案1】:

您错误地调用了突变。

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

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

而且 getVariables 不需要带参数:

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

【讨论】:

  • 好的,Alexi2。我很欣赏你的想法。问题是 InviteAnswer 可以是真或假。
  • 当你接受一个事件时,它是真的。如果你否认,那就是假的。
  • 只有在 InviteAnswer 为真时,您建议的这种方式才有效。你明白重点了吗?
  • 那来自你的 OP。如果要获取变量,请使用 this.props.inviteAnswer
猜你喜欢
  • 2019-08-24
  • 2021-05-27
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
相关资源
最近更新 更多