Vue中的this指向问题
问题产生
在methods中定义方法时,使用到了箭头函数,导致了this指向全局window对象而不是Vue实例。
问题代码
get: () => {
  axios
    .get('../package.json', {
      params: {
        userId: '999',
      },
      headers: {
        token: 'jack',
      },
      before: () => {
        console.log('before init.');
      },
    })
    .then((res) => {
      console.log(res.data);
      this.msg = res.data.name;
    })
    .catch((error) => {
      console.log('error init');
    });
},
解决后代码:
get() {
  axios
    .get('../package.json', {
      params: {
        userId: '999',
      },
      headers: {
        token: 'jack',
      },
      before: () => {
        console.log('before init.');
      },
    })
    .then((res) => {
      console.log(res.data);
      this.msg = res.data.name;
    })
    .catch((error) => {
      console.log('error init');
    });
},
问题原因
ES6中的 箭头函数 “=>” 内部的this是词法作用域,由上下文确定(也就是由外层调用者Vue来确定)。
