• vue实现点击关注之后及时更新列表


    如图,我要实现点击关注之后列表及时更新成最新的列表。

    思路很简单,主要是两点:

    1、在点击关注之后去执行一个请求新的关注列表的action;

    2、在vue组件中watch监听已关注列表和推荐关注列表

    主要代码如下:

    组件:

    关注的methods:

    followMethod(item){
              if(this.token){
                this.$store.dispatch('follow',{followUserId:item.pubId,page:this.page,size:this.size});
                this.$set(item,"followStatus",true);
    //            this.$store.dispatch('refreshFollowList',{page:0,size:this.size});
              }else{
                Toast({
                  message: "请先登录",
                  duration: 800
                });
                setTimeout(function () {
                  this.$router.push('/login');
                },800)
              }
          },

    watch:

    followList(curVal, oldVal){
            console.log(curVal)
          },
          userFollowList(curVal, oldVal){
            console.log(curVal)
          },

    followList.js vuex的列表module文件:

    action:

    follow({dispatch,commit},payload){
        axios({
          method:"post",
          url:"web/follow/add",
          headers: {'w-auth-token': Cookies.get('token')},
          params:{
            page:payload.page,
            size:payload.size
          },
          data:{
            followUserId:payload.followUserId
          }
        }).then((res) => {
          Toast("关注成功");
          return dispatch('refreshFollowList')
        }).catch((error) => {
          Toast("关注出错,请重试!");
        });
      }
    refreshFollowList({state,commit}){
        if(token){
          axios.all([
            axios({
              method:"get",
              url:"web/pub/recommend",
              headers: {'w-auth-token': token},
            }),
            axios({
              method:"get",
              url:"web/pub/list_pub_and_top_news",
              headers: {'w-auth-token': Cookies.get('token')},
            })
          ]).then(axios.spread(function(res1,res2){
            commit("REFRESHFOLLOWLIST",res1);
            commit("REFRESHUSERFOLLOWLIST",res2);
          }));
        }else{
          axios({
            method:"get",
            url:"web/pub/recommend",
          }).then(function(res){
            commit("REFRESHFOLLOWLIST",res);
          });
        }
      },

    mutation:

    const mutations = {
      REFRESHFOLLOWLIST(state,res){
          state.followList=res.data.content;
          state.totalPages=res.data.totalPages;
      },
      REFRESHUSERFOLLOWLIST(state,res){
        state.userFollowList=res.data.content;
        state.userTotalPages=res.data.userTotalPages;
      },
    };
  • 相关阅读:
    问题:弹窗还没点击确认就执行了跳转
    关于版本的问题
    timeUtil
    使用jframe编写一个base64加密解密工具
    JMeter 命令行(非GUI模式)详解(一)-分布式(远程)执行脚本及查看指定结果、日志
    jmeter分布式压测 java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
    mysql5.7日志时间与系统时间不一致
    mysql查看执行sql语句的记录日志
    Appium如何获取appPackage和appActivity
    关于测试设置
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/9224545.html
Copyright © 2020-2023  润新知