Implémenter l'importation de modules dynamiques dans React Native Expo
P粉885562567
2023-08-28 15:01:05
<p>Si mon application <strong>React Native</strong> (exécutée dans une application Expo Go) effectue actuellement une opération <code>import/from</code></p>
<pre class="brush:php;toolbar:false;">importer Foo, {Bar} depuis "foo";</pre>
<p>Comment puis-je convertir cela en une importation dynamique qui importe uniquement lorsqu'une certaine condition est remplie, par exemple lorsque <code>hello === "world"</code> ? </p>
<p>Les actions suivantes entraîneront le blocage de l'application avec l'erreur <code>exception C++ non standard</code>. </p>
<pre class="brush:php;toolbar:false;">if (hello === "world") {
importer Foo, {Bar} depuis "foo" ;
}</pré>
<p>J'ai essayé la solution de contournement suivante, mais cela entraîne toujours un crash avec <code>exception C++ non standard</code> : </p>
<pre class="brush:php;toolbar:false;">if (hello === "world") {
const Foo = importer('foo')
const Bar = Foo.Bar
}</pre></p>
Vous pouvez utiliser la fonction import() pour charger des modules de manière asynchrone. Voici un exemple :
Dans ce code, la fonction import() renvoie une promesse qui se résout en un objet module. L'attribut par défaut de l'objet module est affecté à la variable Foo et l'attribut Bar de l'objet module est affecté à la variable Bar.
Il convient de noter que la fonction import() est asynchrone, donc tout code qui repose sur des modules importés doit être placé dans la fonction de rappel then(). De plus, vous devez vous assurer que tout code qui repose sur des modules importés n'est exécuté qu'après le chargement du module.