Проблема, когда использование динамического значения с компонентом изображения реагирует на нативный - PullRequest
0 голосов
/ 22 декабря 2018

Я получаю данные из БД и помещаю их в исходное изображение, это будет ошибкой, но если я введу только строку, она будет работать нормально

Выполнить нормально: <Image source={require('./src/image/honda-accord.png')} />

Выполнить сбой: <Image source={require("./src/image/" + carOfPerson[0]["cars"][i]["picture"] + "")} />

Значение carOfPerson[0]["cars"][i]["picture"] является honda-accord.png

Произошла ошибка изображения снимок экрана в эмуляторе Android: enter image description here

И консольный журнал в журнале кота:

  Body:
{"type":"TransformError","lineNumber":0,"errors":[{"description":"App.js: App.js:Invalid call at line 130: require(\"./src/image/\" + carOfPerson[0][\"cars\"][i][\"picture\"] + \"\")","lineNumber":0}],"name":"SyntaxError","message":"App.js: App.js:Invalid call at line 130: require(\"./src/image/\" + carOfPerson[0][\"cars\"][i][\"picture\"] + \"\")","stack":"Error: App.js:Invalid call at line 130: require(\"./src/image/\" + carOfPerson[0][\"cars\"][i][\"picture\"] + \"\")\n    at F:\\Workspace_ReactNative\\ReactNativeRealm\\node_modules\\metro\\src\\JSTransformer\\worker.js:247:19\n    at Generator.next (<anonymous>)\n    at step (F:\\Workspace_ReactNative\\ReactNativeRealm\\node_modules\\metro\\src\\JSTransformer\\worker.js:40:30)\n    at F:\\Workspace_ReactNative\\ReactNativeRealm\\node_modules\\metro\\src\\JSTransformer\\worker.js:51:15"}
    at com.facebook.react.devsupport.BundleDownloader.processBundleResult(BundleDownloader.java:296)
    at com.facebook.react.devsupport.BundleDownloader.access$200(BundleDownloader.java:37)
    at com.facebook.react.devsupport.BundleDownloader$1.onResponse(BundleDownloader.java:174)
    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
    at java.lang.Thread.run(Thread.java:764)

Спасибо за помощь.

1 Ответ

0 голосов
/ 22 декабря 2018

React Native в данный момент не поддерживает динамические вызовы require, т.е. вам нужно передать полную константную строку внутри вашего оператора require, чтобы он работал.

Подробнее об этом читайте в github: https://github.com/facebook/react-native/issues/6391

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...