Referência da API
Principais funções e formas de retorno exportadas pelo global-rx-state.
criarEstadoRx
Se houver um argumento, é o modo de tupla anônima, e se um nome for passado, é o modo de objeto nomeado. O modo nomeado suporta chamadas dentro do componente.
// Anonymous tuple mode: module top-level only
const [setCount, getCount, useCount, countSubject, countReady] =
createRxState(0);
// Named object mode
const { setCount, getCount, useCount, countSubject, countReady } =
createRxState(0, "count", { storage: "auto" });criarTuplaEstadoRx
Usado quando o nome é determinado em tempo de execução, mas a ordem de retorno da tupla é necessária. A opção de armazenamento pode ser usada com a chave nomeada.
const [setDraft, getDraft, useDraft, draftSubject, draftReady] =
createRxStateTuple(
{ content: "" },
`draft:${tabName}`,
{ storage: "sessionstorage" },
);createRxReducer / createRxReducerTuple
const { dispatchCart, getCart, useCart, cartSubject, cartReady } =
createRxReducer(initialCart, cartReducer, "cart", { storage: "auto" });
const [dispatchFilter, getFilter, useFilter] =
createRxReducerTuple(
initialFilterState,
filterReducer,
`workspace-filter:${workspaceId}`,
);valores de armazenamento
RxStateStorage inclui aliases compatíveis com backends de persistência. sessionstorage e sessionStorage usam o sessionStorage do navegador.
type RxStateStorage =
| "in-memory"
| "auto"
| "indexeddb"
| "IndexedDB"
| "websql"
| "WebSQL"
| "localstorage"
| "localStorage"
| "sessionstorage"
| "sessionStorage";
type RxStateResolvedStorage =
| "in-memory"
| "indexeddb"
| "websql"
| "localstorage"
| "sessionstorage";
interface RxStateStorageOptions {
storage?: RxStateStorage;
name?: string;
storeName?: string;
keyPrefix?: string;
}autoseleciona o driver localForage disponível na ordem IndexedDB, WebSQL, localStorage. O armazenamento resolvido da API de consulta retornará o backend real selecionado, não auto.
Utilitários de armazenamento
O armazenamento de estado nomeado e o reducer podem ser verificados por três utilitários.
function hasRxState(
name: string,
storageOptions: RxStateStorageOptions,
): Promise<boolean>;
function findRxStateStorages(
name: string,
): Promise<RxStateResolvedStorage[]>;
function getRxStateStorageInfo(
name: string,
storageOptions?: RxStateStorageOptions,
): Promise<RxStateStorageInfo[]>;hasRxState verifica se há valores na configuração de armazenamento especificada. findRxStateStorages retorna os backends reais com valores confirmados sem duplicatas, e getRxStateStorageInfo sempre retorna os locais de armazenamento confirmados como um array.
interface RxStateStorageInfo {
key: string;
storageKey: string;
fullKey: string;
storage: RxStateResolvedStorage;
name: string;
storeName: string;
keyPrefix: string;
}storageKey é a chave do item real e fullKey é a chave completa que pode ser verificada no backend que expõe a chave plana. Se o mesmo nome estiver em várias configurações de armazenamento, vários itens também serão retornados nos resultados de getRxStateStorageInfo.
function hasRxReducer(
name: string,
storageOptions: RxStateStorageOptions,
): Promise<boolean>;
function findRxReducerStorages(
name: string,
): Promise<RxStateResolvedStorage[]>;
function getRxReducerStorageInfo(
name: string,
storageOptions?: RxStateStorageOptions,
): Promise<RxStateStorageInfo[]>;