请问在zustand的store文件中是否可以直接访问浏览器的window?

请问在zustand的store文件中是否可以直接访问浏览器的window?

比如我有一个store文件如下:

bears.store.ts:

const ipcRenderer = window.ipcRenderer // 这里报错:window is not defined


export const createBearSlice = (set:any, get:any) => ({

  // 1.状态
  bears: 0,

  removeAllBears: () => {

    // 设定状态
    set({ bears: 0 })
  },

})

我在store文件中直接使用window的时候,会报错:

image.png

阅读 1.8k
2 个回答
let ipcRenderer;
if (typeof window !== "undefined") {
  ipcRenderer = window.ipcRenderer;
}

Nodejs环境下里面没有window

Electron?

Electron 里只有渲染线程才能访问 window。其他线程是在独立的上下文环境(有点儿类似微信小程序),并没有 window。

其次即便是渲染线程里你可以访问 window 了,但 ipcRenderer 它也并不挂载在 window 下啊,也就是它并不是个全局变量啊(除非是你自己声明了一个也叫这个名的全局变量)。你需要从 electron 模块中 require 导入才行:

const { ipcRenderer } = require('electron');
推荐问题
logo
Microsoft
子站问答
访问
宣传栏