reactjs 在Map并放置在image标签中后,Native React Images未显示

bxgwgixi  于 2023-05-06  发布在  React
关注(0)|答案(3)|浏览(134)

嗨,我有下面的代码,我只是目前想打印出的图像,将风格后。它应该打印一张图片,因为它在列表中遇到他们,并打印他们旁边的面朝下的一面。
我已经改变了'cardImages = []'的使用方式...

const CardImages = [
  {
    image: require("../assets/images/Matching_Cards/Level_One/BLUE_CARD.png"),
  },

我意识到这不是正确的方式,但我不得不尝试...

const CardImages = [
  {
    image: "../assets/images/Matching_Cards/Level_One/BLUE_CARD.png",
  },

这似乎没有什么区别。我在控制台日志中没有看到任何错误,我的列表被打乱并填充了我可以从console.log()中看到的图像。
下面是我的返回方法附加到我的CardDisplay函数,它应该迭代它们并在元素中显示它们。

return (
    <View>
      <Text style={{ textAlign: "center" }}>CARD DISPLAY: {difficulty}</Text>
      <View>
        {cards.map((card) => (
          <View key={card.id}>
            <Image
              style={GlobalStyles.faceDownCard}
              source={require("../assets/images/Matching_Cards/BACKGROUND_CARD.png")}
            />
            <Image style={GlobalStyles.faceDownCard} source={card} />
          </View>
        ))}
      </View>
    </View>
  );

下面是我的组件的完整结构

import React, { useEffect, useState } from "react";
import { Text, View, Image } from "react-native";
import { GlobalStyles } from "../Styles/GlobalStyles";

const CardImages = [
  {
    image: require("../assets/images/Matching_Cards/Level_One/BLUE_CARD.png"),
  },
  {
    image: require("../assets/images/Matching_Cards/Level_One/ORANGE_CARD.png"),
  },
  {
    image: require("../assets/images/Matching_Cards/Level_One/PINK_CARD.png"),
  },
  {
    image: require("../assets/images/Matching_Cards/Level_One/RED_CARD.png"),
  },
  {
    image: require("../assets/images/Matching_Cards/Level_One/WHITE_CARD.png"),
  },
  {
    image: require("../assets/images/Matching_Cards/Level_One/YELLOW_CARD.png"),
  },
];

// shuffle cards

const CardDisplay = ({ difficulty }) => {
  const [cards, setCards] = useState([]);

  useEffect(() => {
    shuffleCards();
  }, []);

  const shuffleCards = () => {
    const shuffleCards = [...CardImages, ...CardImages]
      .sort(() => Math.random() - 0.5)
      .map((card) => ({ ...card, id: Math.random() }));

    setCards(shuffleCards);
  };

  console.log(cards);

  return (
    <View>
      <Text style={{ textAlign: "center" }}>CARD DISPLAY: {difficulty}</Text>
      <View>
        {cards.map((card) => (
          <View key={card.id}>
            <Image
              style={GlobalStyles.faceDownCard}
              source={require("../assets/images/Matching_Cards/BACKGROUND_CARD.png")}
            />
            <Image style={GlobalStyles.faceUpCard} source={card} />
          </View>
        ))}
      </View>
    </View>
  );
};

export default CardDisplay;

感谢所有和任何帮助!:)

fnvucqvd

fnvucqvd1#

您的图像需要height/width prop 来定义。在StyleSheet中定义then是不够的(如果是,我不确定);你必须把它们交给那些 prop 中的形象。

anauzrmj

anauzrmj2#

尝试给你的图像组件一些样式的高度和宽度

5us2dqdw

5us2dqdw3#

在我的例子中,我将“Image”替换为“ImageBackground”
所以,替换这个:

import { Image } from "react-native";

对此:

import { ImageBackground } from "react-native";

相关问题