如何解决Apollo Mutation 上的意外重定向附加视频链接 - React Native,Expo
尝试实现关注/取消关注功能。
我的组件内部发生了什么:
预期道具:followingUserId、followingTeamId
- 获取当前用户关注的用户/团队列表
- 检查用户ID/团队ID是否已经在列表中并显示关注/关注(“关注”的其他名称可以是“取消关注”)按钮
- 在 AddFollower/RemoveFollower 上,我们调用一个变更,并将我们关注的人添加到我们的 Apollo 查询缓存中的以下列表中,所以下次如果我们转到相同的配置文件,我们会看到以下按钮。
请查看此视频链接中的示例: Video Evidence
const FollowUnfollow = ({
followingTeamId,followingUserId,}) => {
// List of users/teams this user is following
// Will be a decider to show Following/Follow Button
const [userFollowingList,setUserFollowingList] = useState([]);
// Getting the current user information
const currentUser = useQuery(currentUserQuery);
const [AddFollower] = useMutation(addFollowerMutation);
const [RemoveFollower] = useMutation(removeFollowerMutation);
const setinitialState = () => {
if (currentUser.data)
setUserFollowingList(currentUser.data.currentUser.following);
};
useEffect(() => {
setinitialState();
},[]);
let isFollowing = userFollowingList.some((followingInfo) =>
followingInfo.id === followingTeamId ? followingTeamId : followingUserId
);
const addFollower = async () => {
let addedFollower = await AddFollower({
variables: {
input,},// I was trying to do this before as well,but it's the same thing
// Takes me back to the original page
// update: (store,{ data: { addFollower } }) => {
// const { currentUser } = store.readQuery({
// query: currentUserQuery,// });
// store.writeQuery({
// query: currentUserQuery,// data: {
// currentUser: Object.assign(
// { ...currentUser },// {
// following: addFollower.following,// }
// ),// },// });
// },});
setUserFollowingList(addedFollower.data.addFollower.following);
};
// removeFollower
const removeFollower = async () => {
let removedFollower = await RemoveFollower({
variables: {
input,// update: (store,{ data: { removeFollower } }) => {
// const { currentUser } = store.readQuery({
// query: currentUserQuery,// {
// following: removeFollower.following,});
setUserFollowingList(removedFollower.data.removeFollower.following);
};
return (
<View>
{!isFollowing ? (
<View>
<Button
value={"Follow"}
onPress={addFollower}
/>
</View>
) : (
<View>
<Button
value={"Following"}
onPress={removeFollower}
/>
</View>
)}
</View>
);
};
export default FollowUnfollow;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。