所以我加载了我的组件,然后我调用了类似下面的内容:
created() {
this.$store.dispatch('messages/connect');
this.$store.dispatch('messages/fetchAllMessages');
// this.$emit('set-recipient', this.chats[0]);
},
computed: mapGetters('messages', {
chats: 'getMessages'
}),
已创建的评论部分是我想要运行的代码段,但仅限于this.chats
的创建,而不是之后的任何更新。
如果我尝试发出当前的事件,我会收到错误:Cannot read property '0' of null
。
希望你理解我的意思。
有什么想法吗?
答案 0 :(得分:0)
fetchallMessages
调用您的服务器来获取消息,对吗?当meit像这样运行时,异步过程不会被冻结。
如果您确保从添加了chats
后解决的该操作返回Promise,则可以执行以下操作:
this.$store.dispatch('messages/fetchAllMessages')
.then(() => {
this.$emit('set-recipient', this.chats[0]);
})
如果从该操作返回Promise时遇到问题,请分享其实现,我们将对其进行修复。
答案 1 :(得分:0)
如果我理解正确,您只想在this.$emit('set-recipient', this.chats[0]);
初始化后执行chats
。
您有两个选择:
不要将mapGetters
用于聊天getter,只需自己定义计算:
computed: {
...mapGetters('messages')
chats(){
const messages = this.$store.getters.getMessages;
if (messages.length){
this.$emit('set-recipient', this.chats[0]);
}
return messages;
}
}
您可以将逻辑移动到商店,并在修改聊天时从那里发出事件,而不是在组件中执行