这里有个问题

来源:8-8 添加持久化数据逻辑代码

来到地球的第一天

2020-07-12

左侧点击 打开文件的时候, fileHelper读取文件拿到内容,给files[id]的body赋值,就触发了fileChange函数,那么就会把当前文件变成为保存状态。。但是我看老师的没有这问题,不知道怎么回事

写回答

2回答

_长江长江我是黄河

2021-01-20

遇到类似情况,我猜测是函数内部同步执行导致setActiveFileID在setFiles完成之前导致重复渲染

把setActiveFileID放在readFile的异步回调里即可

if (!currentFile.isLoaded) {
    readFile(currentFile.path).then(value => {
        const newFile = { ...files[fileID], body: value, isLoaded: true }
        setFiles({ ...files, [fileID]: newFile })
        setActiveFileID(fileID)
    })
} else {
    setActiveFileID(fileID)
}


0
0

张轩

2020-07-15

同学你好 在本地测试了一下 我这里fileHelper 读取 并没有触发 fileChange 函数。不知道你的 SimpleMDE 是怎么写的。我本地的写法

<SimpleMDE
    key={activeFile && activeFile.id}
    value={activeFile && activeFile.body}
    onChange={(value) => {fileChange(activeFile.id, value)}}
    options={{
    minHeight: '515px',
    }}
/>


0
0

2024更新 Electron+React+七牛云实战跨平台桌面应用

开发一款自动云同步的 Markdown 文件管理软件

1253 学习 · 463 问题

查看课程