|
0
|
| Michael Coxon · 技术社区 · 3 年前 |
|
1
1
很
like
此外,这里的主要问题不仅是异步性质,而且是状态值由基于当前闭包的函数使用,状态更新将反映在下一次重新呈现中,现有闭包不受影响,而是创建新的闭包 。现在在当前状态下,钩子中的值是由现有的闭包获得的,当重新呈现时,闭包会根据是否再次创建函数来更新。
即使您添加
如果要对状态更新执行操作,则需要使用
就更新状态的语法而言,
但是,如果要将响应与以前存在的值合并,则必须使用状态更新的回调语法以及正确使用排列语法,如
|
|
2
0
的其他详细信息 previous answer :
而React
TLDR:原因是
closure
围绕不可变的范围
解决:
解释为什么会发生这种情况:
如果异步是唯一的原因,那么就有可能
然而,两者
使用钩子时,通过使用
常数值
与
两个渲染之间的值可能不同,但在渲染本身内部和任何渲染内部都保持不变
closures
(即使在渲染完成后仍能使用更长时间的功能,例如。
考虑跟随fake,但是 同步的 ,类似React的实现:
|
|
|
3
0
我知道已经有了很好的答案。但我想给出另一个想法,如何解决同样的问题,并使用我的模块访问最新的“电影”状态 react-useStateRef 它的每周下载量超过11000次。 正如您所理解的,通过使用React state,您可以在每次状态更改时呈现页面。但通过使用React ref,您总是可以获得最新的值。
所以模块
更多信息: |
|
|
4
0
React的useEffect有自己的状态/生命周期。它与状态的突变有关,在效果被破坏之前,它不会更新状态。 只要在参数状态下传递一个参数,或者将其保留为黑色数组,它就会完美地工作。
或者,您可以尝试React.useRef()在React钩子中进行即时更改。
|
|
|
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 1 年前 |
|
|
vatsal chauhan · 即使在字体预加载时,文本加载也很慢 1 年前 |
|
|
noblerare · Vite错误-未定义导出(SSR) 1 年前 |