【发布时间】:2020-04-22 16:33:14
【问题描述】:
我用 vue-cli 做了一个聊天应用来练习。我使用 vue-socket.io-extended 作为客户端的插件来建立 socket-io 连接。
我发送到 vuex 存储中的服务器,以便我能够连接到任何公用包内的套接字。
这是我在 vuex 操作中编写发出调用的方式:
actions: {
emitSendMsg(dispatch, msgToSend){
return new Promise((resolve, reject) => {
this._vm.$socket.client.emit('msg', msgToSend,(error)=>{
if(error){
return reject(error);
}
resolve();
})
})
}
}
这就是我在 vue 组件方法中调用 emit 函数的方式:
methods:{
sendMsg(){
const self = this;
if(!self.msgToSend){
return alert('Please input mssage');
}
self.disableCompose();
self.$store.dispatch("emitSendMsg", self.msgToSend).then(() => {
self.clearCompose();
}).catch(function(error) {
alert(error);
self.clearCompose();
});
}
}
如您所见,我使用 Promise 以便方法可以执行回调操作。
实际上它工作正常,问题是,在 vuex 的发射函数中,我创建了一个变量“dispatch”并且我没有实际使用它,并且我让我不通过规则“no-unused- es-lint 的 vars”,除非禁用规则,否则我无法将文件提交到 git。
插件的npm页面提供的下面的语法我试过了,但是不行。
actions: {
emitSocketEvent(data) {
this._vm.$socket.client.emit('eventName', data);
this._vm.$socket.client.emit('with-binary', 1, '2', { 3: '4', 5: new Buffer(6) });
}
}
那么有没有更合适的方法来完成这项工作?
【问题讨论】:
标签: vue.js socket.io vuex eslint