【问题标题】:Electron + React keeps reload the page when fs.writeFileSync()当 fs.writeFileSync() 时,Electron + React 不断重新加载页面
【发布时间】:2022-04-05 19:51:12
【问题描述】:

preload.js

const { readFile, readFileSync, writeFileSync } = require('fs')
const { contextBridge, ipcRenderer, ipcMain } = require('electron')
require('electron')
contextBridge.exposeInMainWorld('config', {
    readConfig: () => {
        const data = readFileSync(__dirname + '/config.json', 'utf-8')
        return data
    },
    writeJson: (data) => {
        writeFileSync(__dirname + '/config.json', data)
    },

    ipc: ipcRenderer,
})

React App.js

导致 Electron 刷新的函数

    const onNoteAdd = () => {
        const newNote = {
            description: '',
            id: Noteid,
        }
        const newArr = arr.concat(newNote)
        writeJson(JSON.stringify(newArr))
        setArr(newArr)
        setNoteId((Noteid) => Noteid + 1)
    }

Electron.js

app.on('ready', () => {
    createWindow()
    const ipc = ipcMain
    ipc.on('message', (event, data) => {
        console.log(data)
        fs.writeFileSync(__dirname + '/config.json', data)
    })
})

我想用 ipcMain 从 App.js 中的 ipcRender 接收到的 JSON 覆盖公用文件夹中的 JSON

但问题是当 writeFileSync 工作时,

以某种方式刷新电子并跳过覆盖

我尝试使用 App.js 覆盖 preload.js 文件中的“writeJson”函数,并在 App.js 中使用 ipc.send 并在 Electron.js 中接收并写入 json,但没有任何效果。

电子版是12.0.7

【问题讨论】:

    标签: javascript node.js reactjs electron


    【解决方案1】:

    您可能启用了热重载,请尝试添加忽略路径

    电子重载器

    require('electron-reloader')(module, {ignore: [regex_to_config_json]})

    电子重载

    require('electron-reload')(__dirname, {ignored: [regex_to_config_json] })

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 1970-01-01
      • 2020-11-09
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2018-05-02
      • 1970-01-01
      相关资源
      最近更新 更多