Я получаю сообщение об ошибке в окне cmd webpack, когда запускаю 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.info('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
src\App.vue:60:11
const decoded = null
Мне кажется, что decoded
используется в login()
, есть идеи?
1) decoded
не является частью возвращаемого значения data
, поэтому оно не будет доступно в this.decoded
. Неиспользуемая локальная переменная — причина, по которой вы получаете предупреждение. 2) У вас есть несколько операторов return
в data
. Ничто после первого не будет оцениваться. 3) Вы не хотите пытаться вызывать login()
в своей data
функции. Переместите его в created
или mounted
@Фил Спасибо. Извините за мое невежество, но как мне получить доступ к декодированному, а также объявить его как константу со значением декодированного токена?
вам нужно изменить метод данных
Поскольку ваши данные являются функцией, и то, что выставляется, является возвращаемым значением. вам нужно вернуть декодирование из data(), чтобы использовать декодирование в вашем методе входа в систему.
data () {
const token = localStorage.usertoken
const decoded = jwtDecode(token)
return {
first_name: '',
surname: '',
email: '',
created: '',
decoded: decoded
}
Ну, вы не используете
decoded
— это похоже на локальную переменную вdata
.