微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apollo Mutation 上的意外重定向附加视频链接 - React Native,Expo

如何解决Apollo Mutation 上的意外重定向附加视频链接 - React Native,Expo

尝试实现关注/取消关注功能

我的组件内部发生了什么:

预期道具:followingUserId、followingTeamId

  1. 获取当前用户关注的用户/团队列表
  2. 检查用户ID/团队ID是否已经在列表中并显示关注/关注(“关注”的其他名称可以是“取消关注”)按钮
  3. 在 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 举报,一经查实,本站将立刻删除。