usestate 异步更新问题

1,037 阅读1分钟

用usestate这个hooks返回的函数来更新是异步的,若是我们想根据最新的state来更新state,可以这样写:

import React, { useState } from 'react';
function MyComponent() { 
   const [count, setCount] = useState(0); 
   const increment = () => { 
   setCount(count + 1); 
   }; 
   const doubleIncrement = () => { 
     increment();
     // 使用函数式更新,确保在更新时使用最新的状态值
     // setCount((prevCount) => prevCount * 2); // 会输出 2
     setCount(count * 1); // 会输出 0,因为count取得还是初始值0,并不是
     经过increment()异步更新之后的1
   }; 
   return ( 
     <div> 
         <div>Count: {count}</div> 
         <button onClick={doubleIncrement}>Double Increment</button> 
    </div>
  ); 
}
   export default MyComponent;