首页 > 解决方案 > 为什么反应进度条呈现整个百分比而不是逐渐增加它?

问题描述

我正在尝试根据页面加载时 setTimeout 的更改来更新百分比状态,因此填充器将填充progressiveBar 直到 100%

const { React, ReactDOM } = window
const { useEffect, useState, Fragment } = React
const { render } = ReactDOM
const rootNode = document.getElementById('app')

const ProgressiveBar = () => {
   const [state, setState] = useState({
    percentage : 10
   });


   if(state.percentage < 100 ) {
         setTimeout(
       setState(prevState => {

         let { percentage } = prevState;
         percentage = prevState + 1; 
         return {
           percentage
         }
       }), 30
     )
   }

  return (
    <div >
      <h4>progressive bar when......
      </h4>
       <div className="progressiveBar">
         <div className="innerFiller" style={{width:`${ state.percentage }%`}}>
         </div>
        </div>
       <div>
      </div>
      </div>
  )
}


ReactDOM.render(<ProgressiveBar/>, rootNode)

标签: javascriptreactjs

解决方案


像这样的东西可能会起作用

const ProgressiveBar = () => {
  const [percentage, setPercentage] = useState(10);

  if (percentage < 100) {
    setTimeout(() => setPercentage(percentage + 1), 30);
  }

  return (
    <div>
      <h4>progressive bar when......</h4>
      <div className="progressiveBar">
        <div className="innerFiller" style={{ width: `${percentage}%` }}>
          {percentage}
        </div>
      </div>
      <div />
    </div>
  );
};

推荐阅读