Aller au contenu principal

useSetRecoilState(state)

Renvoie une fonction de réglage pour mettre à jour la valeur de l'état Recoil inscriptible.


function useSetRecoilState<T>(state: RecoilState<T>): SetterOrUpdater<T>;

type SetterOrUpdater<T> = (T | (T => T)) => void;

Renvoie une fonction setter qui peut être utilisée de manière asynchrone pour changer l'état. Le setter peut recevoir une nouvelle valeur ou une fonction de mise à jour qui reçoit la valeur précédente comme argument.


Il s'agit du hook recommandé à utiliser lorsqu'un composant a l'intention d'écrire dans l'état sans le lire. Si un composant utilisait le hook useRecoilState() pour obtenir le setter, il s'abonnerait également aux mises à jour et effectuerait un nouveau rendu lorsque l'atome ou le sélecteur serait mis à jour. L'utilisation de useSetRecoilState() permet à un composant de définir la valeur sans souscrire au composant pour le restituer lorsque la valeur change.

Exemple

import {atom, useSetRecoilState} from 'recoil';

const namesState = atom({
key: 'namesState',
default: ['Ella', 'Chris', 'Paul'],
});

function FormContent({setNamesState}) {
const [name, setName] = useState('');

return (
<>
<input type="text" value={name} onChange={(e) => setName(e.target.value)} />
<button onClick={() => setNamesState(names => [...names, name])}>Ajouter un nom</button>
</>
)}

// Ce composant sera rendu une fois
function Form() {
const setNamesState = useSetRecoilState(namesState);

return <FormContent setNamesState={setNamesState} />;
}