Есть ли способ использовать uri вместо require для типов React Native Prop? - PullRequest
0 голосов
/ 09 марта 2019

Когда я пытаюсь использовать uri, изображение не отображается, и я хочу избежать локальных изображений, потому что я не могу динамически использовать require.

static propTypes = {
    ...ViewPropTypes,
    initialPage: PropTypes.number,
    pager: PropTypes.instanceOf(IndicatorViewPager),
    tabs: PropTypes.arrayOf(PropTypes.shape({
        text: PropTypes.string,
        iconSource: Image.propTypes.source, <-- Here is the problem
        selectedIconSource: Image.propTypes.source
    })).isRequired,
}

Есть ли способ заставить это принять источники Uri?Также вот остальная часть моего кода:

let tabs = [{
    text: `${this.state.tags.toLowerCase()}`,
    iconSource: 'https://www.exmaple.com/img/cookies.png',
    selectedIconSource: require("../img/bluep.png")
}];

1 Ответ

1 голос
/ 10 марта 2019

Я думаю, что вы смешиваете пару вещей. Источником Image может быть require () или uri, но uri - это не просто строка, которую вы можете передать исходной структуре Image. Это должен быть объект с опорой строки uri, например:

<Image source={{uri: 'http://myimageurl.com'}}/>

Во-вторых, с типами реквизитов вы просто определяете, какой тест реквизита вы хотите использовать во время отладки. Это не имеет ничего общего с тем, что ваше изображение не отображается. Если вы отправите неправильный реквизит, он покажет желтый предупреждающий экран.

Наконец, ваша проблема в том, что вы просто отправляете реквизит в виде строки, и вам нужно отправить объект.

Так что, не видя большую часть остального кода, у вас все будет в порядке, изменив эту часть:

let tabs = [{
    text: `${this.state.tags.toLowerCase()}`,
    iconSource: {uri: 'https://www.exmaple.com/img/cookies.png'},
    selectedIconSource: require("../img/bluep.png")
}];
...