При использовании React без хуков вы можете столкнуться с передачей реквизитов от функциональных компонентов к компонентам класса, что может вызвать очень ненужный стресс и путаницу и может привести к тому, что вы будете искать длинные обходные пути для решения проблемы. React Hooks поможет решить некоторые из этих проблем.
Использование хуков
useState: один из самых распространенных хуков. useState возвращает начальное значение состояния и метод обновления для этого состояния. (функции метода обновления очень похожи на setState в компонентах класса)
import { useState } from 'react';
function Example() {
// Declare a new state variable, which we'll call "count"
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
Обратите внимание на строку, в которой мы объявили переменную count. Если бы мы не использовали хуки, наш код выглядел бы так:
import React, { Component } from 'react'; export class ReactWithoutHooks extends Component { constructor(props) { super(props; this.state = { count: 0 } } render() { const { count} = this.state; return ( <div className="App"> <header className="App-header"> You clicked the button: { count} times. <button onClick={() => this.setState({ count: count+ 1 }) } > Click me! </button> </header> </div> ) } }
Хуки позволяют нам определять/манипулировать состоянием, не заставляя нас менять много кода. Не говоря уже о том, что код намного чище и короче.
Если требуется несколько состояний, и они используются в разных местах вашей формы, хук useState будет чрезвычайно полезен.
const LoginForm = () => { const [login, setLogin] = useState({ email: '', password: '' }); return ( const { handleSubmit } = this.props; <div className="App"> <header className="App-header"> <form onSubmit={handleSubmit}> <input value={ login.email } onChange={(e) => setLogin(prevState => { ...prevState, email: e.target.value }) } /> <input value={ login.password } onChange={(e) => setLogin(prevState => { ...prevState, password: e.target.value }) } /> <button type="submit">Submit</button> </form> </header> </div> ) }
Конечно, помимо useState, есть и другие хуки, и вы даже можете создавать свои собственные пользовательские хуки, но я обнаружил, что хук useState очень распространен и является хорошей отправной точкой для изучения хуков React.