#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
}