W JS wymagają instrukcje są rozwiązywane w pakiecie czas (gdy pakiet JS jest obliczany). Dlatego nie jest obsługiwane umieszczanie wyrażenie zmiennej jako argument dla require
.
W przypadku wymagających zasobów jest jeszcze trudniej. Gdy masz require('./someimage.png')
, React Native packager ustawi żądany obraz, a następnie zostanie dołączony do niego razem z aplikacją, dzięki czemu będzie można go używać jako "statycznego" zasobu, gdy aplikacja jest uruchomiona (w rzeczywistości w trybie deweloperskim nie będzie to pakiet obraz z twoją aplikacją, ale zamiast tego obraz będzie serwowany z serwera, ale to nie ma znaczenia w twoim przypadku).
Jeśli chcesz użyć obrazu losowego jako statycznego zasobu, musisz poinformować swoją aplikację, aby powiązała ten obraz. Można to zrobić na kilka sposobów:
1) Dodaj go jako statyczny atut swojej aplikacji, a następnie odwoływać się do niego z <Image src={{uri:'name_of_the_image_in_assets.png'}}/>
(here sposób można dodać go do natywnej aplikacji na iOS)
2) Wymagaj statycznie wszystkich obrazów z góry. Sth w postaci:
var randomImages = [
require('./image1.png'),
require('./image2.png'),
require('./image3.png'),
...
];
Następnie w kodzie można zrobić:
<Image src={randomImages[Math.floor(Math.random()*randomImages.length)]}/>
3) Użyj wizerunek sieci z <Image src={{uri:'http://i.imgur.com/random.jpg'}}/>
Czy próbowałeś tego dokonać? Nie jestem w stanie zrozumieć, dlaczego to nie zadziała, o ile istnieje ścieżka do pliku. Od RN0.14 można bezpośrednio wymagać obrazów ze ścieżek obrazów, więc ta metoda powinna działać –
Czy znalazłeś jakieś rozwiązanie swojego problemu? – Rahul