переменной присваивается значение, но никогда не используется при объявлении его в объекте данных Vue и использовании его в методе

#javascript #vue.js #eslint

#javascript #vue.js #eslint

Вопрос:

Я получаю сообщение об ошибке в окне webpack cmd при запуске npm run dev в проекте.

Вот код и сообщение об ошибке, которое я получаю, в частности, код, относящийся к родительскому компоненту Vue верхнего уровня, в котором есть панель навигации, детали которой меняются в зависимости от того, вошел ли пользователь в систему:

Код

 <script>
// import required components
import EventBus from './components/EventBus'
import router from './router/index.js'
import jwtDecode from 'jwt-decode'

export default {
  data () {
    const token = localStorage.usertoken
    const decoded = jwtDecode(token)
    return {
      first_name: '',
      surname: '',
      email: '',
      created: ''
    }

    return {
      auth: false
    }

    try {
      this.login()
    } catch (error) {
      console.log('Not currently signed in')
    }
  },

  methods: {
    logout () {
      this.first_name = ''
      this.surname = ''
      this.email = ''
      this.created = ''
      localStorage.removeItem('usertoken')
      this.auth = false
      router.push({
        name: 'login'
      })
    },

    login () {
      this.first_name = this.decoded.f_name
      this.surname = this.decoded.s_name
      this.email = this.decoded.email
      this.created = this.decoded.created
    }
  },

  mounted () {
    EventBus.$on('logged-in', status => {
      this.auth = status
      this.login()
    })
  }
}
</script>
  

И сообщение об ошибке

http://eslint.org/docs/rules/no-unused-vars  'decoded' is assigned a value but never used
  srcApp.vue:60:11
      const decoded = null
  

Для меня это выглядит так, как decoded используется в login() , есть идеи?

Комментарии:

1. Ну, вы не используете decoded — это выглядит как локальная переменная в data .

2. 1) decoded не является частью data возвращаемого значения, поэтому оно не будет доступно в this.decoded . Неиспользуемая локальная переменная является причиной получения предупреждения 2) У вас есть несколько return операторов в data . Ничего после первого не будет оценено. 3) Вы не хотите пытаться вызывать login() в своей data функции. Переместите ее в created или mounted

3. @Phil Спасибо. Извините за мое невежество, но как мне получить доступ к decoded, одновременно объявляя его как const со значением декодированного токена?

Ответ №1:

вам необходимо изменить свой метод данных

Поскольку ваши данные являются функцией, и то, что получает доступ, является возвращаемым значением. вам необходимо вернуть decoded из data(), чтобы использовать decoded в вашем методе входа.

  data () {
        const token = localStorage.usertoken
        const decoded = jwtDecode(token)
        return {
          first_name: '',
          surname: '',
          email: '',
          created: '',
          decoded: decoded
        }