在 Apollo React Mutation 组件中自定义变量

Posted

技术标签:

【中文标题】在 Apollo React Mutation 组件中自定义变量【英文标题】:Custom define variables inside Apollo React Mutation Component 【发布时间】:2019-03-17 12:32:30 【问题描述】:

我的后端处理 AddLike 突变。这需要一个 UserId 和一个 CommentId 或 PitchId。看你喜欢哪个。我想在整个应用程序中重用我的 LikeButton 组件这样我需要在我的 Apollo React Mutation 中定义我的变量以获取 CommentId 或 PitchID。现在我似乎无法做任何事情。有什么建议? :-)

这是组件的代码。 API GrahQL 有效。所以没有什么可以改变的。

import * as React from 'react';
import  Mutation  from 'react-apollo';
import  ADD_LIKE  from '../../GraphQLStatements/GraphQLStatements'; 

interface ILikeButtonProps 
currentUser : number;
type : any;
index: number;


const LikeButton: React.SFC<ILikeButtonProps> = (props) => 
let inputType : string = "pitchId"

const DefineType = () => 
    if (props.type === "comment") 
        inputType = "commentId"
    
    else 
        inputType = "pitchId"
    


return (
    <Mutation mutation=ADD_LIKE>
        (addLike) => (
            <i className="far fa-thumbs-up icon like__button"
                onClick=e => 
                e.preventDefault();
                e.stopPropagation();
                DefineType()
                addLike( variables :  like : 
                     "userId": props.currentUser,
                       inputType : props.index
                     
                ).then ((res : any) => 
                    console.log(res.data.addLike.statusMessage)
                );
            >
            </i>
        )
    </Mutation>
 );
;

export default LikeButton;

现在这不起作用。提前致谢!

【问题讨论】:

【参考方案1】:

在 inputType 周围添加方括号有效:

addLike( variables :  like : 
           "userId": props.userId,
            [inputType]: props.id
           

【讨论】:

以上是关于在 Apollo React Mutation 组件中自定义变量的主要内容,如果未能解决你的问题,请参考以下文章

在 Apollo React Mutation 组件中自定义变量

React Apollo GraphQL Mutation 返回 400(错误请求)

React-Apollo Mutation 返回空响应

使用 Apollo Client 和 Apollo Server 的 React Native 应用程序的 Mutation 类型的未知参数“”on field“”

Reactjs/Apollo/AppSync Mutation 触发了两次

React Apollo Link - 如何在使用 <Query /> 和 <Mutation /> 组件之外向 GraphQL 服务器查询身份验证令牌?