Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@proscom/prostore-axios

Package Overview
Dependencies
Maintainers
3
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@proscom/prostore-axios

Adapter for prostore and axios. Allows using axios query as a store

  • 0.2.12
  • latest
  • npm
  • Socket score

Version published
Maintainers
3
Created
Source

prostore-axios

Эта библиотека расширяет prostore, добавляя в него специальные классы сторов для выполнения http-запросов с помощью axios.

В библиотеку входит единственный класс AxiosQueryStore, который расширяет RequestStore, обеспечивая единообразное API для выполнения запросов и хранения их результатов в сторе, на который можно подписаться.

Использование

import axios from 'axios';
import { AxiosQueryStore } from '@proscom/prostore-axios';

// Создаем клиент, который будет выполнять запросы
// на клиент можно навесить интерцепторов, чтобы расширить
// его функционал. Подробнее - в документации axios
const client = axios.create();

const query: AxiosRequestConfig = {
  url: '/countries',
  method: 'get'
};

// Создаем стор
const store = new AxiosQueryStore({
  // Запрос, который будет выполняться
  query,

  // Клиент, который будет выполнять запрос
  client,

  // Функция, которая по результату запроса result определяет,
  // что положить в state.data
  // (опционально, по умолчанию кладется весь результат)
  mapData: (x) => x.data,

  // Функция, которая превращает variables, переданные в стор,
  // в AxiosRequestConfig. Можно задать свою функцию, или использовать
  // AxiosQueryStore.mapVariablesParams или AxiosQueryStore.mapVariablesData
  mapVariables: (data) => {
    data;
  },

  // Так как AxiosQueryStore расширяет RequestStore
  // то можно передать все параметры конструктора RequestStore
  // см. подробнее в Readme @proscom/prostore
  // https://gitlab.com/proscom/prostore/-/blob/master/packages/prostore/README.md#requeststore

  // Первоначальное значение
  initialData: null,

  // Функция пропуска запроса в зависимости от переменных
  skipQuery: (vars) => undefined,

  // Функция обновления данных при повторном запросе
  updateData: (data, oldData, params) => data,

  // Уникальный идентификатор стора для передачи данных
  // при использовании серверного рендеринга
  ssrId: undefined
});

// Чтобы инициировать запрос данных, надо вызвать
store.loadData(
  // variables - изменяемые параметры запроса
  // можно передать любую часть параметров axios.request
  // они применятся поверх того, что определено в query
  {
    // например, get-параметры
    params: {
      page: 1
    }
  },

  // options - объект опций
  {
    // можно перезаписать состояние стора вручную
    changeState: {},
    // можно передать любую часть параметров axios.request
    // они применятся поверх того, что определено в query
    axiosOptions: {}
  }
);

// Можно подождать ответа сразу
try {
  const result = await store.loadData(/* ... */);
} catch (error) {
  // ...
}

// А можно подписаться на все изменения стора
store.state$.subscribe((state) => {
  const { loading, loaded, error, data, variables } = state;
  // ...
});

Для реализации бесконечной подгрузки, см. раздел "Пагинация с дозагрузкой" документации @proscom/prostore.

FAQs

Package last updated on 07 Sep 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc