Похоже, функция asyncData вызывается один раз при загрузке страницы.Я до сих пор не знаю, почему он не принимает параметры в порядке, изложенном в документах и многочисленных руководствах, но он не обновит страницу, потому что он никогда больше не вызывается.
Чтобы обновить данные страницы новым вызовом API, вам нужно вернуть обещание axios из части методов экспорта.Приведенный ниже код сначала выполняет запрос на получение axios, затем добавляет или вычитает 1 из идентификатора с функциями плюс и минус.
<script>
import axios from 'axios'
export default {
head() {
return {
title: 'Weather'
}
},
data: function() {
return { counter: 1 }
},
methods: {
plus: function(counter, data, datalength) {
this.counter += 1
axios.get('http://localhost:8000/api/' + this.counter).then(res => {
console.log(this.counter)
console.log(res.data)
return (this.data = res.data)
})
},
minus: function(counter, data) {
if (this.counter >= 2) {
this.counter -= 1
axios.get('http://localhost:8000/api/' + this.counter).then(res => {
console.log(this.counter)
console.log(res.data)
return (this.data = res.data)
})
} else {
this.counter = 1
}
}
},
async asyncData({ params, counter }) {
let { data } = await axios.get('http://localhost:8000/api/1')
return { data }
}
}
</script>
Если кто-то хочет разработать или опубликовать лучшее решение, пожалуйста, продолжайте, но яЯ пишу это, потому что я искал так много учебников, и ничего не получалось, пока я не нашел способ интерпретировать документацию, которая, конечно, не подходит для начинающих.