【vue】——使用watch 观察路由变化,从新获取内容

更新:11-29
时隔半年,又从新使用VUE进行开发,有了新方案——beforeRouteLeavehtml

在组件内直接使用,前提是你用了vue-router:vue

beforeRouteLeave (to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 能够访问组件实例 `this`
  }

完.....

ios

问题背景:

点击用户头像 => 进入用户我的中心,在用户我的中内心点击其余用户的头像,我但愿显示被点击用户的我的中心,但只看到了路由参数在发生变化,页面内容并无更新。如图:
vue-router

页面代码以下:axios

<script>
    export default {
        data() {
            return {
                data: {}
            }
        },
        methods: {
          fetchDate() {
          // 使用 axios获取数据
          ......
        },
        created() {
          this.fetchDate();
        }
    }
</script>

解决办法:

使用 watch,观察路由,一旦发生变化便从新获取数据!fetch

<script>
    export default {
        data() {
            return {
                data: {}
            }
        },
        methods: {
          fetchDate() {
          // 使用 axios获取数据
          ......
        },
        created() {
          // 组件建立完后获取数据,
          // 此时 data 已经被 observed 了
          this.fetchDate();
        },
        watch: {
          // 若是路由有变化,会再次执行该方法
          "$route": "fetchDate"
        }
    }
</script>

相关文章
相关标签/搜索