Cet article présente principalement l'introduction des composants React Native Echarts réactifs. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Ces dernières années, avec le terminal mobile. Les exigences en matière de visualisation des données sont de plus en plus élevées, et les bibliothèques de graphiques traditionnelles comme MPAndroidChart ne peuvent plus répondre aux besoins de plus en plus anormaux des chefs de produit. Le développement de la visualisation de données dans le domaine front-end est relativement prospère. L'utilisation d'une puissante bibliothèque de visualisation de données frontale comme Echarts sur le terminal mobile via WebView est un bon moyen de résoudre le problème.
Dans le développement React Native, puisque le même langage JavaScript est utilisé comme front-end, le travail de connexion des Echarts est relativement fluide, mais l'encapsulation de certains composants nécessaires peut encore améliorer considérablement l'efficacité du développement.
Echarts a officiellement recommandé une bibliothèque d'empaquetage tierce : react-native-echarts (remarque : son nom de package nmp correspondant est native-echarts. Il compte actuellement plus de 400 étoiles et plus de 100 téléchargements hebdomadaires, qui peuvent). être vu Il est encore largement utilisé. Cependant, après notre enquête, nous avons constaté que React-Native-Echarts présentait les problèmes suivants :
La bibliothèque n'a pas été mise à jour depuis plus de six mois. La version Echarts est bloquée. 3.0. Le packaging Android nécessite l'ajout manuel d'actifs. Le problème n'a pas encore été résolu
La flexibilité de l'interface de la bibliothèque est faible, par exemple, la taille ne peut être définie qu'en largeur et en hauteur. ; le package d'extension Echarts ne peut pas être utilisé ; l'enregistrement d'événements, la communication WebView, etc. ne peuvent pas être effectués
Étant donné que l'utilisation de WebView pour encapsuler Echarts implique du HTML local, ce n'est pas une fonction à l'état pur. Niveau langage JavaScript, et il n'y a pas de code natif, donc en faire un package nmp n'est pas un bon choix. Écrivez-le dans les composants internes du projet, le configurer vous-même est une solution plus pratique et plus flexible.
Nous avons donc décidé de ne pas utiliser la bibliothèque de packaging tierce Echarts et d'écrire nous-mêmes un composant universel WebChart. Afin de faciliter l'utilisation lors du développement, ce composant présente les caractéristiques suivantes :
Il est conçu en fonction de la réactivité Il vous suffit de configurer la source de données dans l'option, et le graphique. sera automatiquement actualisé lorsque les données changent, conformément au style de React.
Notre solution consiste à déterminer si le paramètre d'option entrant a changé à chaque mise à jour du composant. Si le changement se produit, transmettez webView.postMessage et transmettez la nouvelle option sous forme de JSON pour informer Echarts de définir à nouveau Option. .
Bien qu'Echarts lui-même compare les options, le jugement préalable peut réduire les communications fréquentes avec WebView causées par les mises à jour. Cela est toujours évident lorsqu'il y a un grand nombre de requêtes asynchrones dans le composant parent du conteneur à l'intérieur de WebView, il met à jour ; utilise l'option setOption d'Echarts lui-même sans recharger l'intégralité de WebView
En utilisant les interfaces postMessage et onMessage de WebView, la communication d'événements entre les graphiques et d'autres composants React Native peut être réalisée
Vous pouvez ajouter n'importe quel script à WebView via le paramètre exScript du composant, qui est flexible à utiliser
Parce qu'il s'agit d'un composant auto-écrit, version echarts, package d'extension, svg/canvas, données Le chargement incrémentiel peut être défini par vous-même
Pour l'utilisation et les exemples, veuillez consulter : react-native-echarts- démo, si vous devez l'utiliser directement, vous pouvez le transplanter selon les étapes suivantes :
Copiez le dossier du composant WebChart dans le répertoire racine à un endroit approprié de votre projet
Modifier /android Copiez le dossier /app/src/main/assets/web au même emplacement que votre projet. Aucun dossier d'actifs ne doit être créé manuellement.
Vous n'avez besoin que des deux étapes ci-dessus pour utiliser le composant WebChart dans votre projet.
Si vous avez besoin d'une personnalisation supplémentaire, le code Echarts se trouve dans la balise dans index.html dans les deux dossiers ci-dessus. Actuellement, il s'agit de la version complète 4.0 sans pack d'extension. pour télécharger la version requise et le remplacement du pack d'extension à partir du site officiel ; svg/canvas, le chargement incrémentiel des données, etc. peuvent être modifiés directement dans WebChart/index.js. Côté mobile, pour des raisons de performances, nous utilisons généralement le mode de rendu svg.
Pour une utilisation spécifique de WebChart, veuillez vous référer à App.js. Le paramètre de style est le même que celui des composants React Native ordinaires. Vous pouvez utiliser flex ou le définir sur une valeur fixe. Trois paramètres supplémentaires :
option(object) : l'objet paramètre attribué à setOption. Après les modifications, WebChart appellera automatiquement setOption en interne pour obtenir une actualisation réactive. Portez une attention particulière au fait que les fonctions ne sont pas traitées lors de l'analyse JSON, vous devez donc éviter d'utiliser un formateur fonctionnel et un LinearGradient basé sur les classes. Utilisez simplement des modèles et des objets ordinaires comme la démo
. exScript (chaîne) : tout code que vous souhaitez exécuter lors du chargement de WebView, généralement l'enregistrement d'événements, etc. Il est recommandé d'utiliser des littéraux de modèle
onMessage(function) : WebView déclenche en interne postMessage. Pour les rappels ultérieurs, postMessage doit d'abord être configuré en exScript pour la communication entre les graphiques et les autres composants React Native
Bien sûr, ce sont des paramètres conçus en fonction de nos besoins commerciaux, vous pouvez le faire Libre de réinitialiser.
Dans le composant WebView de React Native, onMessage et postMessage sont fournis pour une communication bidirectionnelle entre HTML et les composants. Veuillez vous référer à la documentation pour une utilisation spécifique. .
À l'aide de webView.postMessage, WebChart demande à Echarts d'exécuter setOption en exScript, window.postMessage peut être utilisé pour communiquer les événements Echarts aux composants React Native.
Généralement, nous conviendrons que les données de communication sont un objet dans ce format :
{ type: 'someType', payload: { value: 111, }, }
Puisque onMessage et postMessage ne peuvent transférer que des chaînes, la sérialisation JSON est requise dans exScript, similaire à ceci :
exScript={` chart.on('click', (params) => { if(params.componentType === 'series') { window.postMessage(JSON.stringify({ type: 'select', payload: { index: params.dataIndex, }, })); } }); `}
Ce qui précède est le composant WebChart réactif que nous avons encapsulé et son utilisation. Pour le code complet, veuillez consulter : react-native-echarts-demo.
Dans l'utilisation, il reste encore plusieurs écueils non résolus, qui ne peuvent être contournés qu'à l'heure actuelle. Les étudiants qui en ont connaissance sont invités à les corriger :
Recommandations associées :
Comment utiliser NodeJS + Lighthouse + Gulp pour créer un outil de test automatisé des performances de sites Web React +mongodb Utilisation et configurationCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!