P粉4398045142023-09-03 16:06:45
因此,这确实取决于代码的执行方式,特别是 setState 的异步性质,因此您可以使用 setState 的回调形式。这是一个例子:
1 |
|
这是包含其余代码的完整示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
P粉7757237222023-09-03 16:04:09
看起来像三件事:
checkLength
。setState
的新值。这是 React 的基本思想(是否是个好主意还有待商榷),状态值在渲染期间是不可变的。 setState
只是给出下一个渲染将使用的下一个不可变状态。setState
依赖于先前的状态时,您应该将回调传递给setState
,而不是直接使用当前值。举个例子,假设你有一个空数组,你调用 fetch 一次,然后在第一个数组完成之前再次调用 fetch 。在执行 ...blob
时,这两个 setState
调用都会引用空数组。通过传递回调,setState
获取作为参数传入的最新值。更多信息: https://react.dev/reference/react/Component#setstate 最简单的解决方案是将数组作为参数传递给 setState
回调内的 checkLength
。
这是问题中的 .then()
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
这是async
await
1 2 3 4 5 6 7 8 9 10 11 |
|
检查长度
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|