如何在 React Native 组件中有条件地包含图像?

IT技术 image reactjs react-native
2021-05-22 18:30:56

我可以向ListView单元格添加静态图像就好了(请参阅下面的代码),但是如何动态更改图标图像?

来自React Native 文档

<Image source={require('./img/check.png')} />

是为 iOS 和 Android 引用图像文件的推荐方法。

我有一个名为的组件ExpandingCell,它可以选择显示一堆不同的图标,但其他一切都保持不变。

在 a 中,ListView我创建了一个cell对象,然后将其传递到ExpandingCell要渲染的

ListView 数据源数组如下所示:

var LIST_DATA = [
 ...
  {type: 'ExpandingCell', 
   icon: './CellIcons/MagnifyingGlassIcon.png', //unused
   title: 'Lorem Ipsum', 
   detail: 'Donec id elit non mi porta gravida at eget metus.'},
...
];

然后在renderCell方法中它通过上面的单元格对象:

renderCell(cell) {
    if (cell.type === 'ExpandingCell') {
        return (
          <ExpandingCell cell={cell} />
        );
    }
}

现在ExpandingCell我有这个render()

render() {
    return (
        ...
        <Image source{
            require('./CellIcons/MagnifyingGlassIcon.png')
        }>
        </Image>
        ...
    );
}

但是,当我尝试this.props.cell.icon像这样使用时

<Image source={require(this.props.cell.icon)}></Image>

我收到以下错误: Requiring unknown module "./CellIcons/MagnifyingGlassIcon.png".

提前致谢 =)

1个回答

在包装过程中必须知道图像。文档中有一个关于它的部分

把它放在你定义 ExpandingCell 的文件的顶部:

const MAGNIFYING_GLASS_ICON = require('./CellIcons/MagnifyingGlassIcon.png');

然后你可以像这样使用常量

let icon = someCondition ? MAGNIFYING_GLASS_ICON : SOME_OTHER_ICON;
<Image source={icon}/>

您必须在那里以这种方式使用所有图像的要求。