Возможно ли сделать store и подписку компонентов на него аналогично как в Redux

Возможно ли сделать store и подписку компонентов на него аналогично как в Redux чисто на React Hooks ? Возможно есть ссылка на пример ? или это не есть правильный путь и надо использовать Redux ? что проще ?


Ответы (1 шт):

Автор решения: Александр

Конечно можно, вы просто переносите стейт в ваш костюмный хук.

const useCustomStore = () => {
  const [number, setNumber] = useState(0)
  
  const invrement = () => {
    setNumber(prevState => prevState + 1)
  }

  return { invrement, number } // тут передаем, то что мы хотим использовать в компоненте.
}

в компоненте

const myComponent = () => {
   const {invrement, number} = useCustomStore() // ВНИМАНИЕ!! это создаст новый экземпляр костюмного стора.
                                                // если вам нужно что бы одно и тоже использовалось в других компонентах, тогда вызовите этот хук на самом высоком родителе и пробрасывайте {invrement, number} контекстом

  return (
     <div>
       <p>{number}<p>
       <button onClick={invrement}> + 1 </button>
     <div>
  )
}

Но зачем это все нужно если redux уже сделал это за нас. Хотя все зависит от задач, тут все в вашем желании и голове.

→ Ссылка