关于Vue中beforeRouteEnter、beforeCreate、Created的执行时机&this在这三者中的值

前言

这里我也是刚刚学到,做好笔记,希望可以帮助大家

案例

beforeRouteEnter(to, from, next) {
  console.log("beforeRouteEnter", this);
  next();
},

beforeCreate() {
  console.log("beforeCreate中的this", this);
  console.log("beforeCreate中this.alist", this.alist);
},
created() {
  console.log("created中的this", this);
  console.log("created中this.alist", this.alist);
  this.location();
},

效果:

首先从执行时机来看

beforeRouteEnter>beforeCreate>created

this在这三者中的值

beforeRouteEnter

此时组件还没有被创建,所以不能通过this拿到当前的组件实例,页面显示this的值为 undefind

beforeCreated 

beforeCreate中可以获取到this,但是此时实例未初始化只能获取到this对象内以$开头的键值,若访问data中的属性时,会返回 undefind

Created

Created中可以获取到this,并且可以获取到this中data的值

beforeRouteEnter通过next函数传值

import $axios from 'axios'
data() {
  return {
    alist: [],
  };
},
async beforeRouteEnter(to, from, next) {
  const {
    data: { data },
  } = await $axios.get(`http://127.0.0.1:3000/api/blog/list/1`);
  next((vm)=>vm.location(data));
},
methods: {
  location(data) {
    this.alist = data;
  },
}

解析:

vm :vue实例

注意:先beforeRouteEnter中调用axios请求参数时,不能使用mine中定义的全局的axios如:this.$axios,因为此时在beforeRouteEnter中this还没有被定义,我们可以使用局部引入解决这个问题:在组件中定义:import $axios from 'axios'

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值