【问题标题】:Image will not load when trying to call it up from from local JSON file尝试从本地 JSON 文件调用图像时不会加载图像
【发布时间】:2019-08-30 14:13:44
【问题描述】:

我能够从我在 RN 中创建的本地 JSON 文件动态引入数据。但是,当我返回并为每个配置文件插入一个图像以便它可以与他们的配置文件信息一起动态显示时,该应用程序中断说“该组件不能包含子项。如果您想在图像顶部呈现内容,请考虑使用"。
我已经为所有配置文件使用了背景,所以我真的不明白它在说什么,因为我在 JSON 文件中输入的图像将是每个字符的配置文件图像。我是否遵循正确的格式来调用图像?任何帮助,将不胜感激。

这就是我设置 JSON 文件的方式:

  const characters = [
      { id: "1", name: "Homer Simpson", occupation: "Nuclear Safety Inspector", 
        url:
          "https://assets.fxnetworks.com/cms/prod/shows/the-simpsons/photos/simpsons-sidebar/character-facts/Homer/swsb_character_fact_homer_288x763.png"
       },
      { id: "2", name: "Marge Simpson", occupation: "Stay-at-home mom", url:
      "https://assets.fxnetworks.com/cms/prod/shows/the-simpsons/photos/simpsons-sidebar/character-facts/Homer/swsb_character_fact_homer_288x763.png"},
      { id: "3", name: "Bart Simpson", occupation: "Student", url:
      "https://assets.fxnetworks.com/cms/prod/shows/the-simpsons/photos/simpsons-sidebar/character-facts/Homer/swsb_character_fact_homer_288x763.png" },
      { id: "4", name: "Lisa Simpson", occupation: "Student", url:
      "https://assets.fxnetworks.com/cms/prod/shows/the-simpsons/photos/simpsons-sidebar/character-facts/Homer/swsb_character_fact_homer_288x763.png" },
      { id: "5", name: "Maggie Simpson", occupation: "Baby", url:
      "https://assets.fxnetworks.com/cms/prod/shows/the-simpsons/photos/simpsons-sidebar/character-facts/Homer/swsb_character_fact_homer_288x763.png" }

 export default characters;

这就是我引入它的方式:

import React from "react";
import {
  View,
  Text,
  StyleSheet,
  Image,
  Button,
  ImageBackground
} from "react-native";
class CharacterProfiles extends React.Component {
  static navigationOptions = {
    title: "The Simpsons",
    headerStyle: {
      backgroundColor: "#53b4e6"
    },
    headerTintColor: "#f6c945",
    headerTitleStyle: {
      fontWeight: "bold"
    }
  };
  render() {
    const { item } = this.props.navigation.state.params;
    return (
      <View>
        <ImageBackground
          source={{
            uri:
              "https://backgrounddownload.com/wp-content/uploads/2018/09/simpsons-clouds-background-5.jpg"
          }}
          style={{ width: "100%", height: "100%" }}
        >
          <Image>{item.url}</Image>
          <Text>Name: {item.name}</Text>
          <Text>Occupation: {item.occupation}</Text>
          <Button
            title="Character Directory"
            onPress={() => this.props.navigation.navigate("CharacterDirectory")}
          />
          <Button
            title="Homepage"
            onPress={() => this.props.navigation.navigate("Home")}
          />
        </ImageBackground>
      </View>
    );
  }
}
export default CharacterProfiles;

【问题讨论】:

  • 我们能看到 组件的内容吗?
  • @florian 这只是每个字符的 png 图像。如果您查看我的 json 文件,您可以将其复制并粘贴以查看图像。不知道我们是不是你要问的。
  • 对不起,我的意思是 的内容?

标签: javascript json react-native


【解决方案1】:

与您对ImageBackground 组件的操作相同,您需要使用source 属性来分配Image 的URL。你可以在 React Native 的 Image component documentation 中看到更详细的示例。

<Image
  source={{uri: item.url}}
/>

&lt;Image&gt; 标记的内容中以文本形式包含源 URL 将无效。这样做基本上等同于在 HTML 中编写以下内容:

<img>https://example.com/myImage.png</img>

您收到关于将内容放在图像顶部的警告,因为 React Native 认为您正在尝试将 URL 作为文本 叠加在图像上。由于 HTML &lt;img&gt; 元素不能做到这一点,Image 组件也不能。

【讨论】:

  • 最初尝试在 JSON 中使用 source 属性,但这不起作用。但是,您的解释奏效了,现在它是有道理的。再次感谢您。
猜你喜欢
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多