问题描述
我正在使用 Apollo Client 并希望进行可重复使用的调用,因此我被推荐使用自定义挂钩。我已经尝试过,但我认为我没有正确实施它们,因为它们无限期地重新渲染,我不知道这是否真的能达到我想要的效果。
我想从另一个组件调用 useHandleFollow 来调用 useFollowUser
或 useUnfollowUser
,这将根据 isFollowingUser 条件执行两个 useMutations 之一。
export function useHandleFollow(props) {
const { user,isFollowingUser } = props
const [useFollowUser,{ followedData,followError }] = useMutation(FOLLOW_USER);
const [useUnfollowUser,{ unfollowedData,unfollowedError }] = useMutation(UNFOLLOW_USER);
const [followSuccess,setFollowSuccess] = useState(false)
if(!isFollowingUser){
useFollowUser({ variables: { fromId: auth().currentUser.uid,toId: user.id},onCompleted: setFollowSuccess(true)})
}else{
useUnfollowUser({ variables: { fromId: auth().currentUser.uid,onCompleted: setFollowSuccess(true)})
}
return followSuccess
}
然后我尝试从另一个组件的主体中像这样实例化它:
const followed = useHandleFollow({ user: author,isFollowingAuthor })
但这会触发无限循环。真的,我只想在用户点击时调用它,所以有一个这样的功能:
const handleUserFollow = (user) => {
useHandleFollow(user,true)
}
我应该怎么做呢?提前致谢!
编辑:建议的类似问题是一个不同的问题,这个问题是一个单独的问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)