无法读取未定义 NUXT 的 属性 'substring'
Cannot read property 'substring' of undefined NUXT
我在 html 标签中遇到问题,该标签使用我商店中的对象。
当我刷新我的页面时,我的 sotre 中的数组是空的,所以当我在索引页面中刷新时,它会首先加载 html,然后是 mounted 方法,它是我填充商店的地方。它说无法读取未定义
的属性'substring'
index.vue 我使用这个对象:
<p v-html="pegaPrimeiroPost.conteudo.substring(0,500)"></p>
导出 index.vue 的默认值:
computed: {
...mapGetters({
postsDB: "postagensDB/pegaPosts",
pegaPrimeiroPost: "postagensDB/pegaPrimeiroPost",
}),
},
methods: {
...mapActions({
buscaPostDB: "postagensDB/pegaPostsDB",
}),
},
async mounted() {
**await this.buscaPostDB();**
});
},
这个对象 pegaPrimeiroPost 是我从我的数据库中填充的数组中的一个对象。
store/postagensDB:
import axios from 'axios'
export const state = () => ({
posts: [],
primeiroPost: {},
})
export const getters = {
pegaPosts(state) {
return state.posts;
},
pegaPrimeiroPost(state) {
return state.primeiroPost;
},
}
export const actions = {
async pegaPostsDB(state) {
await axios
.get("http:/MY_API_ADRESS")
.then((response) => {
state.commit('carregaStatePosts', response.data)
})
.catch((response) => {
console.log(response)
});
},
}
export const mutations = {
async carregaStatePosts(state, postsDB) {
state.posts = postsDB.posts;
state.primeiroPost = state.posts[0];
},
}
如果我删除 substring() 方法,重新加载页面,那么它将填满我的商店;然后重新添加 substring(),它可以工作,但不会解决我的问题。谁能帮帮我?
我从未使用过 Vue,但这听起来像是您有某种填充对象的异步操作,但您的默认值(在异步调用完成之前使用)没有 属性.如果它不存在,最快的解决方案可能只是给它一个值:
(pegaPrimeiroPost.conteudo || '').substring(0,500)
或设置一个“默认”对象 属性:
export const state = () => ({
posts: [],
primeiroPost: { conteudo: '' },
})
我在 html 标签中遇到问题,该标签使用我商店中的对象。
当我刷新我的页面时,我的 sotre 中的数组是空的,所以当我在索引页面中刷新时,它会首先加载 html,然后是 mounted 方法,它是我填充商店的地方。它说无法读取未定义
的属性'substring'index.vue 我使用这个对象:
<p v-html="pegaPrimeiroPost.conteudo.substring(0,500)"></p>
导出 index.vue 的默认值:
computed: {
...mapGetters({
postsDB: "postagensDB/pegaPosts",
pegaPrimeiroPost: "postagensDB/pegaPrimeiroPost",
}),
},
methods: {
...mapActions({
buscaPostDB: "postagensDB/pegaPostsDB",
}),
},
async mounted() {
**await this.buscaPostDB();**
});
},
这个对象 pegaPrimeiroPost 是我从我的数据库中填充的数组中的一个对象。
store/postagensDB:
import axios from 'axios'
export const state = () => ({
posts: [],
primeiroPost: {},
})
export const getters = {
pegaPosts(state) {
return state.posts;
},
pegaPrimeiroPost(state) {
return state.primeiroPost;
},
}
export const actions = {
async pegaPostsDB(state) {
await axios
.get("http:/MY_API_ADRESS")
.then((response) => {
state.commit('carregaStatePosts', response.data)
})
.catch((response) => {
console.log(response)
});
},
}
export const mutations = {
async carregaStatePosts(state, postsDB) {
state.posts = postsDB.posts;
state.primeiroPost = state.posts[0];
},
}
如果我删除 substring() 方法,重新加载页面,那么它将填满我的商店;然后重新添加 substring(),它可以工作,但不会解决我的问题。谁能帮帮我?
我从未使用过 Vue,但这听起来像是您有某种填充对象的异步操作,但您的默认值(在异步调用完成之前使用)没有 属性.如果它不存在,最快的解决方案可能只是给它一个值:
(pegaPrimeiroPost.conteudo || '').substring(0,500)
或设置一个“默认”对象 属性:
export const state = () => ({
posts: [],
primeiroPost: { conteudo: '' },
})