Laksanakan import modul dinamik dalam React Native Expo
P粉885562567
2023-08-28 15:01:05
<p>Jika apl <strong>React Native</strong> saya (berjalan dalam apl Expo Go) pada masa ini melakukan <kod>import/dari</code></p>
<pre class="brush:php;toolbar:false;">import Foo, {Bar} daripada "foo";</pre>
<p>Bagaimanakah saya boleh menukar ini kepada import dinamik yang hanya mengimport apabila syarat tertentu dipenuhi, seperti apabila <kod>hello === "dunia"</kod>? </p>
<p>Tindakan berikut akan menyebabkan aplikasi ranap dengan ralat <kod>bukan-std C++ pengecualian</code>. </p>
<pre class="brush:php;toolbar:false;">if (hello === "world") {
import Foo, {Bar} daripada "foo";
}</pre>
<p>Mencuba penyelesaian berikut tetapi masih mengakibatkan ranap dengan <kod>bukan-std C++ pengecualian</code>: </p>
<pre class="brush:php;toolbar:false;">if (hello === "world") {
const Foo = import('foo')
const Bar = Foo.Bar
}</pre></p>
Anda boleh menggunakan fungsi import() untuk memuatkan modul secara tidak segerak. Berikut adalah contoh:
Dalam kod ini, fungsi import() mengembalikan janji yang diselesaikan kepada objek modul. Atribut lalai bagi objek modul diberikan kepada pembolehubah Foo, dan atribut Bar bagi objek modul diberikan kepada pembolehubah Bar.
Perlu diambil perhatian bahawa fungsi import() adalah tak segerak, jadi sebarang kod yang bergantung pada modul yang diimport hendaklah diletakkan dalam fungsi panggil balik then(). Selain itu, anda harus memastikan bahawa sebarang kod yang bergantung pada modul yang diimport hanya dilaksanakan selepas modul telah dimuatkan.