Comme d'autres réponses l'expliquent déjà, l'API des hooks a été conçue pour fournir aux composants de fonction des fonctionnalités actuellement disponibles uniquement dans les composants de classe. Les hooks ne sont pas censés être utilisés dans les composants de classe.
Les composants de classe peuvent être écrits pour faciliter la migration vers des composants de fonction.
Avec un seul état :
class MyDiv extends Component {
state = {sampleState: 'bonjour le monde'};
render(){
const { state } = this;
const setState = state => this.setState(state);
return setState({sampleState: 1})}>{state.sampleState};
}
}
est converti en
const MyDiv = () => {
const [state, setState] = useState({sampleState: 'bonjour le monde'});
return setState({sampleState: 1})}>{state.sampleState};
}
Remarquez que le setter de l'état useState
ne fusionne pas automatiquement les propriétés de l'état, cela devrait être couvert avec setState(prevState => ({ ...prevState, foo: 1 }))
;
Avec plusieurs états :
class MyDiv extends Component {
state = {sampleState: 'bonjour le monde'};
render(){
const { sampleState } = this.state;
const setSampleState = sampleState => this.setState({ sampleState });
return setSampleState(1)}>{sampleState};
}
}
est converti en
const MyDiv = () => {
const [sampleState, setSampleState] = useState('bonjour le monde');
return setSampleState(1)}>{sampleState};
}