J'utilise et la bibliothèque de conception pour mon application de réaction.
Et j’ai fait face à d’importantes importations qui me font mal (aujourd’hui 1,1 mb en version réduite à cause de ant-design lib).
Comment puis-je importer différemment des composants antd à travers toute mon application?
METTRE À JOUR:
Il semble que antd
possède des modules énormes ou non optimisés . Ici, la seule différence est l’importation du module Datepicker, et .. boom! + presque 2Mo (en paquet de développement ofc.)
Ces quelques composants ne sont certainement pas 1.2M ensemble. On dirait que vous importez toute la bibliothèque quand vous n'avez besoin que de quelques composants.
Pour que antd
ne charge que les modules nécessaires, vous devez utiliser babel-plugin-import . Consultez le journal de votre console pour connaître l'avertissement "Vous utilisez un package complet d'antd" décrit sur ce lien.
Consultez les docs pour Create-React-App pour savoir comment l'implémenter si vous utilisez CRA.
Pour le moment, une grande partie de antd dist est des icônes svg.
Il n’existe pas encore de moyen officiel de régler ce problème ( vérifiez le problème sur github ).
Mais une solution de contournement existe.
module.exports = {
//...
resolve: {
alias: {
"@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js")
}
}
};
icons.js
dans le dossier src/
ou où vous le souhaitez. Assurez-vous qu'il correspond au chemin des alias!export {
default as DownOutline
} from "@ant-design/icons/lib/outline/DownOutline";
Il est également possible de faire cela avec react-app-rewire
(modifications create-rea-app) dans config-overwrites.js
Essayez d'utiliser code split en utilisant webpack et réagissez routeur. Cela vous aidera à charger les modules de manière asynchrone. C’est la seule solution qui m’a aidé à améliorer le temps de chargement des pages lors de l’utilisation de Ant Framework.
En regardant les docs https://ant.design/docs/react/getting-started#Import-on-Demand Il est recommandé d’importer des composants individuels à la demande .. , vous pouvez essayer de remplacer
import { Button} from 'antd'
avec
import Button from 'antd/lib/button'