【问题标题】:display one image at a time from fetched data from json从从 json 获取的数据中一次显示一张图像
【发布时间】:2021-04-13 02:05:03
【问题描述】:

我是 React 的初学者,尝试一次显示一个图像。目前使用这个 api https://salty-cove-08526.herokuapp.com/api/countries?format=json 一次发送 3 张图像。我正在使用 axios 获取图像并使用 map {this.state.countries.map(country => <img src={country.photo}/>)} 但是 div img-wrapper 中的这个命令一次显示所有 3 个 plz hlep

reactjs


class form extends Component{
    constructor(props){
        super(props);

        this.state={
            answer:'',
            countries:[]
        }
        this.handleChange=this.handleChange.bind(this);
        this.handleSubmit=this.handleSubmit.bind(this);
    }

    componentDidMount(){
        axios.get('https://salty-cove-08526.herokuapp.com/api/countries?format=json')
            .then(res=>{
                this.setState({ countries:res.data});
                
            })
    }
       
    }
    render(){
 
        return (
            <div>
                <section className="login">
                    <div className="loginContainer">
                        <div className="heading">
                            Guess the countries
                        </div>
                        <div className="img-wrapper">
                            {this.state.countries.map(country => 
                                 <img src={country.photo}/>
                            )}
                        </div>

json

[
  {
    "id": 6,
    "name": "canada",
    "photo": "https://en.wikipedia.org/wiki/India#/media/File:Flag_of_India.svg",
    "fact": "sdsds",
    "capital": "sdsdsd",
    "hint_1": "sdsd",
    "hint_2": "sdsdsd"
  },
  {
    "id": 2,
    "name": "usa",
    "photo": "https://en.wikipedia.org/wiki/India#/media/File:Flag_of_India.svg",
    "fact": "ddc",
    "capital": "new york",
    "hint_1": "kuch bhi",
    "hint_2": "kljn;kj"
  },
  {
    "id": 3,
    "name": "china",
    "photo": "https://en.wikipedia.org/wiki/India#/media/File:Flag_of_India.svg",
    "fact": "ddfdf",
    "capital": "k k",
    "hint_1": "jnjn",
    "hint_2": "jknkjn"
  }
]

【问题讨论】:

  • 你可以尝试替换`
    {this.state.countries.map(country => )}
    ` 与 `
    {this.state.countries.photo}}/>
    `
  • @HeroicHitesh 我试过它给出了错误 Expected an assignment or function call 而是看到了一个表达式
  • 我忘了添加return语句,试试这个`
    {return this.state.countries.photo;}}/ >
    `

标签: javascript json reactjs axios


【解决方案1】:

您需要确定要显示的图像。在下面的示例中,我将当前图像的索引保持在状态,然后仅显示该索引处的图像:

const images = [
  {
    "id": 6,
    "name": "canada",
    "photo": "https://en.wikipedia.org/wiki/India#/media/File:Flag_of_India.svg",
    "fact": "sdsds",
    "capital": "sdsdsd",
    "hint_1": "sdsd",
    "hint_2": "sdsdsd"
  },
  {
    "id": 2,
    "name": "usa",
    "photo": "https://en.wikipedia.org/wiki/India#/media/File:Flag_of_India.svg",
    "fact": "ddc",
    "capital": "new york",
    "hint_1": "kuch bhi",
    "hint_2": "kljn;kj"
  },
  {
    "id": 3,
    "name": "china",
    "photo": "https://en.wikipedia.org/wiki/India#/media/File:Flag_of_India.svg",
    "fact": "ddfdf",
    "capital": "k k",
    "hint_1": "jnjn",
    "hint_2": "jknkjn"
  }
];

const PhotoDisplay = () => {
  const [currentImageIndex, setCurrentImageIndex] = React.useState(0);
  
  const handleNextClick = () => {
    setCurrentImageIndex(currentImageIndex + 1);
  };
  
  const currentImage = images[currentImageIndex];
  
  console.log(currentImage);
  
  return <div>
    <button onClick={handleNextClick}>Next Image</button>
    <img src={currentImage.photo} />
  </div>
}

ReactDOM.render(
  <PhotoDisplay />,
  document.getElementById('root')
)
<script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<div id="root"></div>

【讨论】:

  • 嘿thanx 人,但你能不能把代码写成类类型thnx 非常感谢
  • @droid 抱歉,作为编码服务,我无法回答问题 - 如果您想转换它,那么您可以找到很多关于如何做到这一点的指导
  • 可以理解,祝您有美好的一天,感谢您的帮助
猜你喜欢
  • 2019-10-09
  • 2018-07-24
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 2019-04-19
相关资源
最近更新 更多