小编ViQ*_*QRC的帖子

在 Pinia 中使用 Socket.io 时出现问题

我正在尝试使用 Pinia 来管理我正在构建的 Vue.js 应用程序中的某些全局状态,特别是我想在各种组件和视图之间共享 Socket.io 实例。不过我得到了

this.socketObject.emit is not a function
Run Code Online (Sandbox Code Playgroud)

从 Socket.io 实例调用函数时,当我从创建 Socket.io 实例的组件/视图以外的组件调用函数时,会出现错误。以下是代码的一些摘录。

@/views/ LobbyView.vue(这是我创建 Socket.io 实例并将其传递给 Pinia 存储的位置,我可以在该文件中使用emit Fine,不会出现任何错误)

import io from "socket.io-client";
import { useSocket} from "@/store/index";
    ...     
setup() {
   const socketObject = useSocket();
   return { socketObject};
},
    ...
async mounted() {
   this.socketObject = await io("http://localhost:8000");
   this.socketObject.emit("createNewRoom");
}
Run Code Online (Sandbox Code Playgroud)

@/store/ index.js Pinia商店

import { defineStore } from "pinia";
...
export const useSocket = defineStore({
  id: "socket",
  state: () => {
    return {socketObject: Object};
  }, …
Run Code Online (Sandbox Code Playgroud)

state-management socket.io vue.js pinia

2
推荐指数
1
解决办法
5050
查看次数

标签 统计

pinia ×1

socket.io ×1

state-management ×1

vue.js ×1