Kódím.cz
7

Správa stavu

React Context a knihovny pro pokročilou práci se stavem

Sdílení stavu

Nejčastějí chceme pomocí contextu sdílet nějaký stav. V naší ukázce by ve stavu byl uložený objekt se nastavením měny. Ten bychom pak použili jako hodnotu v context provideru.

const App = () => {
  const [settings, setSettings] = useState({
    currency: 'CZK',
  });
  
  return (
    <SettingsContext.Provider value={settings}>

Zároveň je však třeba všem, kdo context používají poskytnout příležitost jej nějak změnit. Například nastavit jinou měnu. K tomu si vyrobíme funkci setCurrency.

const App = () => {
  const [settings, setSettings] = useState({
    currency: 'CZK',
  });
  
  const setCurrency = (currency) => {
    setSettings({ ...settings, currency });
  }

  return (
    <SettingsContext.Provider value={{ ...settings, setCurrency }}>

Díky tomu, že takto do contextu pošleme i funkcu setCurrency, kdokoliv uvnitř contextu si pak může tuto funkci z contextu vytáhnout a použít ji k nastavení měny.

const { currency, setCurrency } = useSettings();