Ответы пользователя по тегу React
  • Как правильно определить компонент как клиентский (RSC)?

    muscimolus
    @muscimolus Автор вопроса
    Проблема была в том, что сериализатор при рендере не видел марки $$id и $$typeof в исходных файлах, поэтому не воспринимал их должных образом, как клиентские.
    Ответ написан
  • Блокировка кнопки на время выполнения функции?

    muscimolus
    @muscimolus
    Не знаю, в чём у тебя проблема, но такой-же код отрабатывает нормально, причём в любых вариантах:

    // fetch
    import React, { useState } from 'react'
    
    export const Button = () => {
        const [ disabled, setDisabled ] = useState(false)
        const [ data, setData ] = useState(null)
        const handleClick = () => {
            console.log('fetch')
            setDisabled(true)
            fetch('https://fakestoreapi.com/products').then(r => r.json()).then(data => {
                console.log('fetched', data)
                setDisabled(false)
                setData(data)
            })
        }
        return (
            <>
                <button type="button" onClick={ handleClick } disabled={ disabled }>
                    Fetch
                </button>
                { data ? (
                    <pre>{ JSON.stringify(data, null, 2) }</pre>
                ) : null }
            </>
        )
    }

    // timeout
    import React, { useState } from 'react'
    
    export const Button = () => {
        const [ disabled, setDisabled ] = useState(false)
        const handleClick = () => {
            console.log('timeout')
            setDisabled(true)
            setTimeout(() => {
                console.log('timed out')
                setDisabled(false)
            }, 2000)
        }
        return (
            <button type="button" onClick={ handleClick } disabled={ disabled }>
                Timeout
            </button>
        )
    }


    P.S. А вообще, не могу понять, почему код скинут кусками. Отправь вообще весь компонент, просто скопируй всё и поменяй в вопросе самом предыдущий код. Может у тебя ещё в чём-то дело.
    Ответ написан
    Комментировать