Uchwyty React to nowy sposób (wciąż rozwijany) uzyskiwania dostępu do podstawowych funkcji reakcji, takich jak state
bez konieczności używania klas, w twoim przykładzie, jeśli chcesz zwiększyć licznik bezpośrednio w funkcji obsługi bez określania go bezpośrednio w właściwości onClick
, mógłby zrobić coś takiego:
...
const [count, setCounter] = useState(0);
const [moreStuff, setMoreStuff] = useState(...);
...
const setCount = () => {
setCounter(count + 1);
setMoreStuff(...);
...
};
i onClick:
<button onClick={setCount}>
Click me
</button>
Szybko wyjaśnijmy, co się dzieje w tej linii:
const [count, setCounter] = useState(0);
useState(0)
zwraca krotkę, w której pierwszy parametr count
jest bieżącym stanem licznika i setCounter
jest metodą, która pozwoli nam zaktualizować stan licznika. Możemy użyć setCounter
metody, aby zaktualizować stan count
dowolnego miejsca - w tym przypadku używamy jej wewnątrz setCount
funkcji, w której możemy zrobić więcej rzeczy; idea haków jest taka, że jesteśmy w stanie utrzymać nasz kod bardziej funkcjonalny i unikać komponentów opartych na klasach, jeśli nie są one pożądane / potrzebne.
Napisałem cały artykuł o hakach z wielu przykładów (w tym liczników), takich jak ten codepen , zrobiłem wykorzystanie useState
, useEffect
, useContext
, i niestandardowych haków . Mógłbym uzyskać więcej szczegółów na temat tego, jak działają hooki w tej odpowiedzi, ale dokumentacja bardzo dobrze objaśnia podpięcie stanu i inne szczegóły, mam nadzieję, że to pomoże.
aktualizacja: Haki nie są już propozycją , ponieważ wersja 16.8 jest już dostępna do użycia, w witrynie Reacta jest sekcja, która zawiera odpowiedzi na niektóre z często zadawanych pytań .
useState
jest zaimplementowany. Oto definicja od wersji 16.9 .