【问题标题】:Displaying Images in ListView for React Native在 ListView 中为 React Native 显示图像
【发布时间】:2016-08-31 03:38:41
【问题描述】:

我有两个表示组件。第一个,称为Category,在做一些设置工作后简单地渲染一个 React Native ListView 组件。

第二个组件Book 只是将数据显示为文本,并带有应通过网络获取的图像。

不幸的是,Image 似乎根本没有显示。有人可以帮我显示图像吗?下面,请找到 CategoryBook 组件定义,以及传递给 Book 的 props 示例。

Category.js

import React from 'react';
import { ListView, Text } from 'react-native';
import _ from 'lodash';
import { camelizeKeys } from 'humps';

import Book from './Book';

const Category = ({ category }) => {
  let element;

  if (!_.isEmpty(category)) { // if data is available
    const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
    const camelCasedBooks = camelizeKeys(category.results.books);
    const data = ds.cloneWithRows(camelCasedBooks);

    element = (
      <ListView
        dataSource={data}
        enableEmptySections
        renderRow={(book) => <Book {...book} />}
      />
    );
  } else { // if data is not available
    element = (
      <Text>Loading</Text>
    );
  }

  return element;
};

Category.propTypes = {
  category: React.PropTypes.object.isRequired,
};

export default Category;

Book.js

import React from 'react';
import { Image, Text, View } from 'react-native';

const Book = ({ author, bookImage, description, title }) =>
  <View>
    <Text>
      {author}
    </Text>
    <Text>
      {bookImage}
    </Text>
    <Text>
      {description}
    </Text>
    <Text>
      {title}
    </Text>
    <Image source={{ uri: bookImage }} />
  </View>;

Book.propTypes = {
  author: React.PropTypes.string.isRequired,
  bookImage: React.PropTypes.string.isRequired,
  description: React.PropTypes.string.isRequired,
  title: React.PropTypes.string.isRequired,
};

export default Book;

样书道具

{
 author: "Vi Keeland",
 bookImage: "https://s1.nyt.com/du/books/images/9781942215462.jpg",
 description: "Reese dismisses a chance encounter with a smug stranger, until he turns out to be her new boss.",
 title: "BOSSMAN"
}

【问题讨论】:

    标签: image listview react-native


    【解决方案1】:

    使用来自远程位置的图像时(例如您的bookImage,您需要在图像的style 上设置显式的widthheight。这是因为没有自动react-native 知道图像有多大的方法。

    查看Image 文档,了解在渲染之前计算图像大小的策略。然而,根据我的经验,在大多数情况下,简单地设置 widthheight 就足够了。

    【讨论】:

    • 托马斯-谢谢。这是完全正确的。我找到了您在文档中提到的文档,但它非常微妙。如果我没有一直在寻找它,我会错过它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多