我正在尝试在此处添加图像,但是当我使用 this.props.imageUri 时。我得到一个空白图像..找不到解决方案

Posted

技术标签:

【中文标题】我正在尝试在此处添加图像,但是当我使用 this.props.imageUri 时。我得到一个空白图像..找不到解决方案【英文标题】:I am trying to add images in here but the moment I use this.props.imageUri. I get a blank image.. Couldn't find a solution 【发布时间】:2021-12-22 08:45:51 【问题描述】:

我正在尝试将图像添加到我的应用程序主页,但似乎每当我使用 this.props.imageUri 时它就不再显示图像了。我尝试使用图像源来做到这一点.. 它可以工作,但是当我创建 Location.js 并添加 this.props.imageUrl 时,图像不再显示.. 所以我不知道该怎么做。

这是我的 Home.js 文件

 import React from "react";
import 
  View,
  Text,
  Button,
  SafeAreaView,
  TextInput,
  StatusBar,
  Platform,
  ScrollView,
  Image,
  imageUri,
  StyleSheet,
 from "react-native";
import ProductsList from "../../components/productsList/ProductsList";
import  styles  from "../../styles/authStyle";
import Icon from "react-native-vector-icons/Ionicons";
import  fontSize  from "styled-system";
import Location from "../components/Location";

export default function Search( navigation ) 
  return (
    <SafeAreaView style= flex: 1 >
      <View style= flex: 1 >
        <View
          style=
            height: 80,
            backgroundColor: "white",
            borderBottomWidth: 1,
            borderBottomColor: "#dddddd",
          
        >
          <View
            style=
              flexDirection: "row",
              padding: 10,
              backgroundColor: "white",
              marginHorizontal: 20,
              shadowOffset:  width: 0, height: 0 ,
              shadowColor: "black",
              shadowOpacity: 0.2,
              borderRadius: 50,
              elevation: 1,
            
          >
            <Icon name="ios-search" size=20 style= marginRight: 10  />
            <TextInput
              underlineColorandroid="transparent"
              placeholder="City, airport, adrerss, or hotel"
              placeholderTextColor="grey"
              style= flex: 1, fontWeight: "700", backgroundColor: "white" 
            />
          </View>
        </View>
        <ScrollView scrollEventThrottle=16>
          <View style= flex: 1, backgroundColor: "white", paddingTop: 20 >
            <Text
              style=
                fontSize: 24,
                fontWeight: "700",
                paddingHorizontal: 20,
                marginLeft: 100,
              
            >
              FIND YOUR RIDE
            </Text>
            <View style= height: 130, marginTop: 20 >
              <ScrollView>
                <Location
                  imageUri=require("../home/nicosia.png")
                  name="nicosia"
                />
              </ScrollView>
            </View>
          </View>
        </ScrollView>
      </View>
    </SafeAreaView>
  );

  const styles = StyleSheet.create(
    container: 
      flex: 1,
      alignItems: "center",
      justifyContent: "center",
    ,
  );


这是 Location.js

import React,  Component  from "react";
import  View, Text, StyleSheet, Image, imageUri  from "react-native";

class Location extends Component 
  render() 
    return (
      <View
        style=
          alignItems: "center",
          height: 130,
          width: 130,
          marginLeft: 20,
          borderWidth: 0.5,
          borderColor: "#dddddd",
        
      >
        <View style= flex: 2 >
          <Image
            source=this.props.imageUri
            style=
              flex: 1,
              width: null,
              height: null,
              resizeMode: "cover",
            
          />
        </View>
        <View style= flex: 1, paddingLeft: 3, paddingTop: 10 >
          <Text>this.props.name</Text>
        </View>
      </View>
    );
  

export default Location;

const styles = StyleSheet.create(
  container: 
    flex: 1,
    alignItems: "center",
    justifyContent: "center",
  ,
);

【问题讨论】:

使用require()获取"../home/nicosia.png"会返回什么?看起来图像源可能需要是格式化为字符串的路径,我不确定require() 是否会返回它。您甚至可能会发现完全删除 require() 会更好。 感谢您的回复.. 但是我怎样才能一起删除 require .. 如果我将它们全部删除,我将只有 imageUri=("../home/nicosia.png")这给了我一个错误..当我使用 require("../home/nicosia.png") 它只是给了我一个空白图像.. 我该怎么办? 【参考方案1】:

将宽度和高度设置为固定大小或忽略它们。

<View style= flex: 2 >
  <Image
    source=this.props.imageUri
    style=
      flex: 1,
      /* Don't set width and height to null */
      width: null,
      height: null,
      resizeMode: "cover",
    
  />
</View>
<View style= flex: 1, paddingLeft: 3, paddingTop: 10 >
  <Text>this.props.name</Text>
</View>

【讨论】:

成功了!!!非常感谢

以上是关于我正在尝试在此处添加图像,但是当我使用 this.props.imageUri 时。我得到一个空白图像..找不到解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何将边框图像添加到动态创建的图像?

需要帮助将图像添加到响应式布局

在 iphone 7 xamarin ios 中缩小图像?

将 JTextPane 内容(图像、表格)保存在文件中

添加图像 iOS xCode

使用 jcrop 裁剪带有预览的图像