В вашем коде есть пара вещей, которые можно было бы сделать по-другому.
Во-первых, ваша функция formatCount()
не возвращает значение. Таким образом, при его выполнении почти нечего показывать.
Во-вторых, ваша функция выполняется до того, как состояние обновляет значение, в результате чего оно всегда остается 0
.
Лучший способ сделать это будет:
import React, { useState, useEffect } from "react";
import { Button } from "react-bootstrap";
const Counter = () => {
const [count, setCount] = useState(0);
useEffect(() => {
formatCount();
}, []);
const formatCount = () => {
count === 0 ? setCount("Nah") : setCount(0);
};
// let classes = "badge m-2";
// classes += (this.state.count === 0) ? "badge-warning" : "badge-primary";
return (
<div>
<Button className="badge badge-warning m-2">-</Button>
{count}
<button>+</button>
</div>
);
};
export default Counter;
Это приводит к обновлению count
при рендеринге и автоматическому повторному рендерингу на экране при изменении.
Дополнительная информация о хуке useEffect()
может находится здесь