import {} from "effector/compat";

Библиотека предоставляет отдельный модуль с поддержкой совместимости до IE11 и Chrome 47 (браузер для устройств Smart TV).

Бандлер, а не транспилятор

Поскольку сторонние библиотеки могут импортировать effector напрямую, вам не следует использовать транспиляторы, такие как Babel, для замены effector на effector/compat в вашем коде, так как по умолчанию Babel не преобразует сторонний код.

Используйте бандлер, так как он заменит effector на effector/compat во всех модулях, включая модули из сторонних библиотек.

Необходимые полифиллы

Вам нужно установить полифиллы для этих объектов:

  • Promise
  • Object.assign
  • Array.prototype.flat
  • Map
  • Set

В большинстве случаев бандлер может автоматически добавить полифиллы.

Vite

Пример конфигурации Vite
import { defineConfig } from "vite";
import legacy from "@vitejs/plugin-legacy";

export default defineConfig({
  plugins: [
    legacy({
      polyfills: ["es.promise", "es.object.assign", "es.array.flat", "es.map", "es.set"],
    }),
  ],
});

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

Ручная замена

Вы можете использовать effector/compat вместо пакета effector, если вам нужно поддерживать старые браузеры.

- import {createStore} from 'effector'
+ import {createStore} from 'effector/compat'

Автоматическая замена

Однако вы можете настроить ваш бандлер для автоматической замены effector на effector/compat в вашем коде.

Webpack

Пример конфигурации Webpack
module.exports = {
  resolve: {
    alias: {
      effector: "effector/compat",
    },
  },
};

Vite

Пример конфигурации Vite
import { defineConfig } from "vite";

export default defineConfig({
  resolve: {
    alias: {
      effector: "effector/compat",
    },
  },
});
Перевод поддерживается сообществом

Документация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.

Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.

Соавторы