我还是不懂为什么这里的openFiledIds没有更新

来源:9-5 添加上下文菜单最终实现

苏慷思

2021-04-28

我们既然已经在fileClick函数中获取到了fileId,并且确定这是新的点击的fileId,那么这个setopenFileIds应当成功了才对,为什么会失败呢,或者说为什么这个openFileIds数组后来获取到的是旧的,但是如果我们在useContextMenu中修改useeffect的依赖就成功了,可是这个useContextMenu中并没有依赖啊,也没有必要更新才对,而且我们获取fileId也正确了。希望老师能进一步解答一下

写回答

1回答

张轩

2021-04-30

同学 我觉得这样理解是最简单的 我们都知道 React 在一次特定的渲染中 所有的变量其实都是不变的 比如 const [ count , setCount ] = useState(0) 这个count 在这次的渲染中永远都等于零,只有调用 setCount 更新以后,在新的一次渲染中 count 才能等于新的值。而我们使用了 useContextMenu(只在 mount 的时候运行了一次) ,调用了 onFileClick(这个 onFileClick 等于一直没有变化),就等于将这次特定的渲染中的 count 永久的添加了到了这个函数中,导致调用这次函数中的 files 一直都是第一次的值,并没有随着 setFIles 的更新而更新。


1
1
苏慷思
原来是这样,受教了
2021-05-03
共1条回复

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

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

1252 学习 · 463 问题

查看课程