我的后端处理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;
现在,这不起作用。预先感谢!
答案 0 :(得分:0)
在inputType周围添加方括号是可行的:
addLike({ variables : { like :
{ "userId": props.userId,
[inputType]: props.id}
}