我还是不懂为什么这里的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 的更新而更新。
112021-05-03
相似问题