我正在尝试使用 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)