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. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.
Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.