2016-05-16 2 views
3

У меня возникли проблемы с отображением изображений, хранящихся в массиве JSON, в ReactNative ListView. Скажем, это мои данные:Добавление изображений, хранящихся в массиве JSON, в ListView - ReactNative

var data = [ 
    { 
    id: 0, 
    photo: '../images/test.png', 
    }, 
    { 
    id: 1, 
    photo: '../images/test.png', 
    }, 
    { 
    id: 2, 
    photo: '../images/test.png', 
    }, 
] 

Тогда, в моем классе, сначала я требую данных (предположим, что он экспортируется правильно):

var data = require("../data").data 

Тогда для каждого элемента в источнике данных, я петлевой через массив JSON и попытайтесь отобразить изображение:

<Image source={{uri:item.photo}} style={styles.photo}></Image> 

Однако на экране ничего не отображается. Я знаю, что данные тянут через правильно, потому что другие текстовые поля (не показано выше) дисплей должным образом, например:

<Text style = {styles.name}>{item.id}</Text> 

Это показывает правильно. Также, если я попытаюсь потребовать изображение непосредственно в источнике, то есть

<Image source={require('../images/test.png')} style={styles.photo}></Image> 

Он отлично работает. Кто-нибудь знает, почему источник изображения не тянет, когда ссылается как переменная?

+0

Да, вы не можете сделать это. 'source: {{uri: blablabla}}' предназначен для получения сетевых изображений. Для местного изображения вам нужно их потребовать. И вы не можете дать «требовать» динамический путь. Путь должен быть статическим. –

+0

Но я требую статический путь, не так ли? Например, 'data [0] .photo' будет статическим путем, на который должен ссылаться источник изображения? –

+0

Это было бы, но вы задаете этот путь динамически, чтобы требовать, что, я думаю, не разрешено. Один из способов был бы, вы можете поместить требование в свою базу данных. –

ответ

1

Вы можете сделать это следующим образом:

var data = [ 
 
    { 
 
    id: 0, 
 
    photo: require('../images/test.png'), 
 
    }, 
 
    { 
 
    id: 1, 
 
    photo: require('../images/test.png'), 
 
    }, 
 
    { 
 
    id: 2, 
 
    photo: require('../images/test.png'), 
 
    }, 
 
]

Смежные вопросы