按钮加载 react-hooks-nextjs

Posted

技术标签:

【中文标题】按钮加载 react-hooks-nextjs【英文标题】:Button Loading react-hooks-nextjs 【发布时间】:2020-03-31 20:52:03 【问题描述】:

我正在做一个加载微调按钮,当我按下按钮时,加载图标会出现但不会在标记的时间消失,并继续加载。代码如下:

组件一:

import React from 'react'

函数加载器()

return(
    <>
    <div className="loaderIcon"></div>
    <style jsx>
    `
    .loaderIcon
        border: 10px solid #f3f3f3;
        border-radius: 50%;
        border-top: 10px solid #3498bd;
        width: 60px;
        height: 60px;
        animation: spin 2s linear infinite;
    
    @keyframes spin
        0%  transform: rotate(0deg);
        100%  transform rotate(360deg);
    
    `
    </style>
    </>
)

导出默认加载器;

组件二:

import React, useState from 'react';

从'../components/loader'导入加载器

函数 ButtonLoading()

const [loading, setLoading] = useState(false)

function loadData()
    setLoading (loading: false)

    setTimeout(()=>
        setLoading(loading: true);
    , 1000);


return(
    <>
    <div>
    <button className="btnLoading" onClick=loadData disabled=loading>
    loading &&(<Loader/>)
    loading && <span className="oneSpan">Loading page</span>
    !loading && <span className="twoSpan">Load page</span>
    </button>
    </div>

    <style jsx>
    `
    .btnLoading
        background-color: green;
    
    .oneSpan
        color: red;
        font-size: 20px;
    

    .twoSpan
        color: black;
        font-size: 20px;
    
    `
    </style> 
    </>
)

导出默认ButtonLoading;

【问题讨论】:

【参考方案1】:

我认为你的加载是倒退的。我相信函数应该看起来像`

function loadData()
    setLoading (loading: true)

    setTimeout(()=>
        setLoading(loading: false);
    , 1000);
`

SetTimeout 在定时器到时运行函数

【讨论】:

以上是关于按钮加载 react-hooks-nextjs的主要内容,如果未能解决你的问题,请参考以下文章

将按钮调用的图像加载到按钮的背景中[关闭]

按钮图像加载为白色?

当按钮被禁用时,在提交按钮前添加加载图标

如何在vue3中通过点击按钮异步加载组件

按钮加载 react-hooks-nextjs

按钮加载事件