<script>
import axios from 'axios'
import PageHeader from '~/components/header.vue'
import FooTer from '~/components/footer.vue'
export default {
components: { PageHeader, FooTer },
async fetch ({ store, params }) {
let { data } = await axios.get('https://jsonplaceholder.typicode.com/users')
store.commit('setStars', data)
}
}
</script><template>
<div class="page">
<Page-Header/>
<section>
<h1>Новости</h1>
<li v-for="user in $store.state.stars" :key="user.username">
{{ user.username }}
</li>
</section>
<Foo-Ter/>
</div>
</template>import {mapState} from 'vuex'...
computed:{
...mapState(['stars'])
}import axios from 'axios'
import { mapState } from 'vuex'
import { mapMutations } from 'vuex'
import { mapActions } from 'vuex'
import PageHeader from '~/components/header.vue'
import FooTer from '~/components/footer.vue'
export default {
components: { PageHeader, FooTer },
computed:{
mapState(['stars'])
},
async fetch ({ store, params }) {
let { data } = await axios.get('https://jsonplaceholder.typicode.com/users')
store.commit('setStars', data)
}
} страница ругается на строку "mapState(['stars'])". Как правильно добавить computed?import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = () => new Vuex.Store({
state: {
counter: 0
},
mutations: {
increment (state) {
state.counter++
}
}
})
export default store async fetch ({ store, params }) {
let { data } = await axios.get('https://jsonplaceholder.typicode.com/users')
store.commit('setNews', data)
},
validate ({ params, news }) {
// Check if `params.id` is an existing category
news.forEach(function(item) {
if (item.username === params.id) {
return true
}
});
}validate ({ params, this.news }) {
// Check if `params.id` is an existing category
this.news.forEach(function(item) {
if (item.username === params.id) {
return true
}
}); то страница ругается. Если использовать просто new, то ничего не работает. Пробывал передавать в validate store и вызывать там уже store.state.news - все равно не помогает. В чем может быть ошибка? import axios from 'axios'
import { mapState } from 'vuex'
import { mapMutations } from 'vuex'
import { mapActions } from 'vuex'
import PageHeader from '~/components/header.vue'
import FooTer from '~/components/footer.vue'
export default {
components: { PageHeader, FooTer },
computed:{
...mapState(['news'])
},
validate ({ params, news }) {
// Check if `params.id` is an existing category
news.forEach(function(item) {
if (item.username === params.id) {
return true
}
});
},
async fetch ({ store, params }) {
let { data } = await axios.get('https://jsonplaceholder.typicode.com/users')
store.commit('setNews', data)
}
}validate ({ params, store }) {
// Check if `params.id` is an existing category
store.state.news.forEach(function(item) {
if (item.username === params.id) {
return true
}
});
}nuxtServerInit ({ commit }, { req }) {
let { data } = await axios.get('https://jsonplaceholder.typicode.com/users')
commit('setNews', data)
},
actions: {
async nuxtServerInit ({ commit }, { req }) {
let { data } = await axios.get('https://jsonplaceholder.typicode.com/users')
commit('setNews', data)
}
}validate ({ params, store }) {
// Check if `params.id` is an existing category
store.state.news.forEach(function(item) {
if (item.username === params.id) {
return true
}
});
} Но вот хоть тресни, validate() не работает. Хотя если делаю простую проверку, типа:validate ({ params, store }) {
// Check if `params.id` is an existing category
/*
store.state.news.forEach(function(item) {
if (item.username === params.id) {
return true
}
});
*/
if ('Bret' === params.id) {
return true
}
} , то страница /news/Bret доступна, другие соот-но нет. Т.е. работает как надо. let item = store.state.news.find(function(item) {
return item.username === params.id
});
return item ? true : false;<page-header/><PageHeader/>