目前无法在 React 应用程序中显示来自 API 的 svg 图像

Posted

技术标签:

【中文标题】目前无法在 React 应用程序中显示来自 API 的 svg 图像【英文标题】:Currently unable to display svg images from API in React app 【发布时间】:2021-10-24 06:30:09 【问题描述】:

我目前遇到的问题是显示我从国家/地区的 API 获得的 svg 图像。现在它们在 html 中显示为空 div 并且没有错误。我也在使用 ReactSVG 包,但仍然没有运气。

下面是进行 API 调用的 Home 组件和提供内容的 Card 组件:

import React, useState, useEffect from 'react';
import axios from 'axios';
import  Container, Row  from 'react-bootstrap';
import CardComponent from '../components/Card';

const baseURL = 'https://restcountries.eu/rest/v2/all';

const Home = () => 
    const [ countries, setCountries ] = useState(null);

    useEffect(() => 
        console.log('hello')
        axios.get(baseURL).then((res) => 
            setCountries(res.data);
        )
    , []);

    return (
        <>
            <Container>
                <Row>
                    countries && (
                        countries.map((country) => 
                            console.log(country.flag)
                            return <CardComponent key=country.name 
                                        title=country.name 
                                        image=country.flag
                                        population=country.population 
                                        region=country.region 
                                        capital=country.capital/>
                        )
                    )
                </Row>
            </Container>
        </>
    )


export default Home;



import React from 'react';
import ReactSVG from 'react-svg';
import  Card  from 'react-bootstrap';


const CardComponent = (props) => 
    const  title, flag, population, region, capital  = props;


    return (
        <Card>
            <ReactSVG src=flag/>            
            <Card.Body>
                <Card.Title>title</Card.Title>
                <Card.Text>Population: <span id="Population">population</span><br></br></Card.Text>                    
                <Card.Text>Region: <span id="Region">region</span><br></br></Card.Text>
                <Card.Text>Capital: <span id="Capital">capital</span><br></br></Card.Text>
            </Card.Body>
        </Card>
    )


export default CardComponent;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

这里还有一个链接到我的这个项目的 Git 存储库https://github.com/codejohnson89/react-countries

【问题讨论】:

您在 图像 中输入了 flag。所以你必须在 CardComponent 中使用 image 变量。请检查以下答案。 @Boris 谢谢!我知道像这样愚蠢的事情会阻止我。谢谢你的收获! 别担心,如果它对你有帮助,请投票给我的答案。 :) 【参考方案1】:

在您的代码中,有一些错误。请检查此代码。

import React, useState, useEffect from 'react';
import axios from 'axios';
import  Container, Row  from 'react-bootstrap';
import CardComponent from '../components/Card';

const baseURL = 'https://restcountries.eu/rest/v2/all';

const Home = () => 
    const [ countries, setCountries ] = useState(null);

    useEffect(() => 
        console.log('hello')
        axios.get(baseURL).then((res) => 
            setCountries(res.data);
        )
    , []);

    return (
        <>
            <Container>
                <Row>
                    countries && (
                        countries.map((country) => 
                            console.log(country.flag)
                            return <CardComponent key=country.name 
                                        title=country.name 
                                        image=country.flag
                                        population=country.population 
                                        region=country.region 
                                        capital=country.capital/>
                        )
                    )
                </Row>
            </Container>
        </>
    )


export default Home;



import React from 'react';
import ReactSVG from 'react-svg';
import  Card  from 'react-bootstrap';


const CardComponent = (props) => 
    const  title, image, population, region, capital  = props;


    return (
        <Card>
            <img src=image  />            
            <Card.Body>
                <Card.Title>title</Card.Title>
                <Card.Text>Population: <span id="Population">population</span><br></br></Card.Text>                    
                <Card.Text>Region: <span id="Region">region</span><br></br></Card.Text>
                <Card.Text>Capital: <span id="Capital">capital</span><br></br></Card.Text>
            </Card.Body>
        </Card>
    )


export default CardComponent;

【讨论】:

以上是关于目前无法在 React 应用程序中显示来自 API 的 svg 图像的主要内容,如果未能解决你的问题,请参考以下文章

Rails API 用户身份验证接受来自 React 代理的 api 调用,但不直接来自主机 url

反应不显示来自webapi的数据[关闭]

React 和 Flux:“在调度中间调度”以显示来自 API 调用的错误消息

如何仅从 React 中的 API 获取第一个数据?

使用 React 和 Redux 对来自 API 的特定日期结果进行分页

React 中来自 API 的状态