useState是异步执行的,也就是执行 setTest 后,不会立即更新 test 的结果,多次调用时,出现了值覆盖的情况。
如果本次的状态更新依赖于上一次最近的状态更新,那么我们可以给 setTest 传递一个函数进去,函数的参数即为最后一次更新的状态的值:
setTest(prevState => ([ ...prevState, newValue ]))