Задать вопрос
@JeanPaulBelmondo

Как использовать состояния внутри UI компонента?

В общем то решил сделать для себя небольшую UI библиотеку, допустим на Tailwind.
Она у меня лежит в отдельном NPM-пакете или подключена через npm link.

Eсть пара ситуаций когда компонент должен иметь своё локальное состояние, вопрос, как это реализовать?

У меня функциональные компоненты, например:
func

import React, { useState } from "react";

export const TestBlock = () => {
    const [state, setState] = useState(null);

    return (
        <button onClick={() => setState(Date.now())}>
            blablabla
        </button>
    )
}


Всё это великолепие падает потому что
"Invalid hook call. Hooks can only be called inside of the body of a function component" и тд.

При этом компонент на классах всё ок.
class

import React from "react";

export class TestBlockClass extends React.Component<{}, { timestamp: number }> {

    constructor(props: any) {
        super(props);
        this.state = { 
            timestamp: 0
        };
    }

    render() {
        return (
            <>
                <div>
                    Time {this.state.timestamp}
                </div>
                <button onClick={() => this.setState({timestamp: Date.now()})}>
                    тык
                </button>
            </>
        )
    }
}



Что делать, как быть?
Или все таки использовать классы?
  • Вопрос задан
  • 253 просмотра
Подписаться 3 Простой 1 комментарий
Ответ пользователя Aetae К ответам на вопрос (3)
Aetae
@Aetae
Тлен
Ты должен делать с ним <TestBlock/> или React.createElement(TestBlock), а ты где-то делаешь просто TestBlock().
Ответ написан