Русский
Открыть в Telegram

Пост Создание стейт менеджера за 40 строк

20 августа 2024
З
Заметки про React
Ссылка
нажмите — покажем
Создание стейт менеджера за 40 строк Пример простого стейт менеджера для React, работающего через хук useSyncExternalStore. Хук useSyncExternalStore появился в React 18 и позволяет подписаться на изменение внешнего хранилища. Внешним хранилищем может быть что угодно, например, браузер. useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot?) Значения в внешнем хранилище могут меняться, а с помощью хука эти изменения можно отследить. Пример стейт менеджера: import { useSyncExternalStore } from 'react'; export type Listener = () => void; function createStore<T>({ initialState }: { initialState: T }) { let subscribers: Listener[] = []; let state = initialState; const notifyStateChanged = () => { subscribers.forEach((fn) => fn()); }; return { subscribe(fn: Listener) { subscribers.push(fn); return () => { subscribers = subscribers.filter((listener) => listener !== fn); }; }, getSnapshot() { return state; }, setState(newState: T) { state = newState; notifyStateChanged(); }, }; } export function createUseStore<T>(initialState: T) { const store = createStore({ initialState }); return () => [useSyncExternalStore(store.subscribe, store.getSnapshot), store.setState] as const; } export const useCountStore = createUseStore(0); function Counter() { const [count, setCount] = useCountStore(); const increment = () => { setCount(count + 1); }; /* --snip-- */ } Если хук useCountStore будет использоваться в нескольких компонентах, то его значение будет общим между всеми компонентами. https://paripsky.github.io/blog/build-your-own-react-state-management/
62 · 3.4K ·

Рядом в ленте

ЗЗаметки про ReactЧеклист безопасности React приложения Обзор популярных уязвимостей фронтенд приложений в контексте React: 🔴Cross-Site Scripting (XSS). Атака заключающаяся в внеЗЗаметки про ReactГлубокое погружение в формы в современном React В своем блоге Кент С. Доддс рассказал, как использовать новые хуки useFormStatus, useActionState и useOptimistic
это сообщение
ЗЗаметки про ReactGoogle Translate может сломать React приложение Браузерное расширение Google Translate может сломать React приложение. Это связано с тем, что, когда расширение ЗЗаметки про ReactТипобезопасный REST API вместе с Zod При работе с REST API нельзя быть уверенным в том, что вернется в ответе запроса. Даже если используешь TypeScript и пишешь
ЗЗаметки про ReactЗаметки про React@ru_react_notes · канал · Технологии
3 412подписчиков491постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем