首页 > 解决方案 > 单击后如何在 React js 中禁用按钮 20 秒

问题描述

我需要禁用一个按钮 20 秒。当我单击并获得当前时间时,我需要下一次单击可以在 20 秒后启用。我尝试了useeffect,但它对我不起作用。

function App() {
const [time, setTime] = useState([]);
const [endTime, setEndTime] = useState([]);

const startWork = (e) => {
    e.preventDefault();
    const StartTime = {
        thisTime: new Date().toLocaleString(),
    };

    setTime(StartTime);
};

const finishWork = (e) => {
    e.preventDefault();
    const StopTime = {
        endTime: new Date().toLocaleString(),
    };

    setEndTime(StopTime);
};

return (
    <div className='App'>
        <div className='startWork'>
            <h1>Start: {time.thisTime}</h1>
            <button type='button' onClick={startWork} disabled={time.thisTime}>
                Start work
            </button>
        </div>
        <div className='finishWork' />
        <h1>Finish: {endTime.endTime}</h1>
        <button type='button' onClick={finishWork} disabled={endTime.endTime}>
            Finish work
        </button>
    </div>
);

}

标签: javascriptreactjs

解决方案


尝试使用 Vanilla JavaScript 的这个概念!我已经实现了,3sec 但同样可以实现20sec.

let button = document.getElementById('btn');

const wait_20sec = () =>{
setTimeout(function(){ button.setAttribute('disabled', true); }, 3000);//3000ms = 3sec
}

button.addEventListener('click',wait_20sec)
<button id="btn">Click Me</button>


推荐阅读