Reactjs 通过React组件中的计数循环

Reactjs 通过React组件中的计数循环,reactjs,for-loop,url,react-component,Reactjs,For Loop,Url,React Component,我试图在react中显示每个口袋妖怪名称的图像。我是新手,无法找到一种方法来循环列表计数,以显示正确的名称和正确的口袋妖怪。如果我取出“{test}”并在src url中插入一个静态数字,代码可以很好地显示一个图像,但是我找不到方法用+1更新url以显示每个口袋妖怪名称的正确图像 我的组件代码如下: import React from 'react'; import './card.styles.css'; export const Card = props => ( <d

我试图在react中显示每个口袋妖怪名称的图像。我是新手,无法找到一种方法来循环列表计数,以显示正确的名称和正确的口袋妖怪。如果我取出“{test}”并在src url中插入一个静态数字,代码可以很好地显示一个图像,但是我找不到方法用+1更新url以显示每个口袋妖怪名称的正确图像

我的组件代码如下:

import React from 'react';
import './card.styles.css';

export const Card = props => (
    <div className = 'card-container'>
        <img alt="monster" 
        {test = props.monster.url[36]}
        src={`https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/${test}.png`}
        width='180'
        />
        <h2> {props.monster.name} </h2>
        <p>{props.monster.email}</p>
    </div>
);
import React, { Component } from 'react';
import {CardList} from './components/card-list/card-list.component.jsx';
import { SearchBox } from './components/search-box/search-box.component.jsx';
import './App.css';

class App extends Component {
  constructor() {
    super();

    this.state = {
      monsters: [],
      searchField: ''
    };
  }

  componentDidMount() { 
    fetch('http://pokeapi.co/api/v2/pokemon')
    .then(response => response.json())
    .then(pokemon => this.setState({ monsters: pokemon.results}));

  }

  handleChange = (e) => {
    this.setState({searchField: e.target.value})
}

  render() {
    const { monsters, searchField} = this.state;
    const filteredMonsters = monsters.filter(monster => 
      monster.name.toLowerCase().includes(searchField.toLowerCase())
      );
    return (
      <div className='App'>
      <h1>Pokemon Rollodex</h1>
      <SearchBox
        placeholder='search monsters'
        handleChange={this.handleChange}
        />
      <CardList monsters={filteredMonsters}/>
      </div>
    );
  }
}

export default App;

您应该删除
{test=props.monster.url[36]}
,并在src标记中直接使用它作为

从“React”导入React;
导入“./card.styles.css”;
导出常量卡=道具=>(
{props.monster.name}
{props.monster.email}

);
不能通过执行以下操作来创建状态:

export const Card=props=>(
{test=props.monster.url[36]}
...

您应该删除
{test=props.monster.url[36]}
并在src标记中直接使用它作为

从“React”导入React;
导入“./card.styles.css”;
导出常量卡=道具=>(
{props.monster.name}
{props.monster.email}

);
不能通过执行以下操作来创建状态:

export const Card=props=>(
{test=props.monster.url[36]}
...

如我所见,您的响应是包含pokemon名称和api url的对象集合 获取口袋妖怪的详细信息。 现在,如果您查看一下url的格式,url包含pokemon的id作为最后一个uri参数 您只需要从url获取该id并从中生成图像url。 您可以从url获取pokemon id,如下所示:

 url.split("pokemon/")[1].replace('/','')
现在,您的卡组件应该如下所示:

 export const Card = props => {
  let id=props.monster.url.split("pokemon/")[1].replace('/','')
 return (  
   <div className = 'card-container'>
    <img alt="monster" 
    src={'https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/'+id+'.png'}
    width='180'
    />
    <h2> {props.monster.name} </h2>
    <p>{props.monster.email}</p>
</div>
 )}
export const Card=props=>{
让id=props.monster.url.split(“口袋妖怪/”)[1]。替换(“/”,“”)
报税表(
{props.monster.name}
{props.monster.email}

)}
考虑以下代码段

//购物车组件
康斯特卡=道具=>{
让id=props.monster.url.split(“口袋妖怪/”)[1]。替换(“/”,“”)
报税表(
{props.monster.name}
{props.monster.email}

)} //卡片列表组件 const CardList=props=>( {道具.怪物.地图(怪物=>( ))} ); 类应用程序扩展了React.Component{ render(){ 让数据=[{name:“bulbasaur”,url:“https://pokeapi.co/api/v2/pokemon/1/"}, {名称:“ivysaur”,网址:https://pokeapi.co/api/v2/pokemon/2/"}, {名称:“venusaur”,网址:https://pokeapi.co/api/v2/pokemon/3/"}, {名称:“charmander”,url:https://pokeapi.co/api/v2/pokemon/4/"}, {名称:“charmeleon”,url:https://pokeapi.co/api/v2/pokemon/5/"}, {名称:“charizard”,url:https://pokeapi.co/api/v2/pokemon/6/"}, {名称:“squirtle”,url:https://pokeapi.co/api/v2/pokemon/7/"}, {名称:“沃索尔”,网址:https://pokeapi.co/api/v2/pokemon/8/"}, {名称:“blanoise”,url:https://pokeapi.co/api/v2/pokemon/9/"}, {名称:“caterpie”,url:https://pokeapi.co/api/v2/pokemon/10/"}, {名称:“metapod”,url::https://pokeapi.co/api/v2/pokemon/11/"}, {名称:“无黄油”,网址:https://pokeapi.co/api/v2/pokemon/12/"}, {名称:“weedle”,url:https://pokeapi.co/api/v2/pokemon/13/"}, {名称:“卡库纳”,网址:https://pokeapi.co/api/v2/pokemon/14/"}, {名称:“beedrill”,url:https://pokeapi.co/api/v2/pokemon/15/"}, {名称:“pidgey”,网址:https://pokeapi.co/api/v2/pokemon/16/"}, {名称:“pidgeotto”,url:https://pokeapi.co/api/v2/pokemon/17/"}, {名称:“pidgeot”,url:https://pokeapi.co/api/v2/pokemon/18/"}, {名称:“拉塔塔”,网址:https://pokeapi.co/api/v2/pokemon/19/"}, {名称:“raticate”,url:https://pokeapi.co/api/v2/pokemon/20/"}]; //这里只是为了演示,我使用的是静态数据 返回 } } ReactDOM.render(,document.getElementById('root');

如我所见,您的响应是包含pokemon名称和api url的对象集合 获取口袋妖怪的详细信息。 现在,如果您查看一下url的格式,url包含pokemon的id作为最后一个uri参数 您只需要从url获取该id并从中生成图像url。 您可以从url获取pokemon id,如下所示:

 url.split("pokemon/")[1].replace('/','')
现在,您的卡组件应该如下所示:

 export const Card = props => {
  let id=props.monster.url.split("pokemon/")[1].replace('/','')
 return (  
   <div className = 'card-container'>
    <img alt="monster" 
    src={'https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/'+id+'.png'}
    width='180'
    />
    <h2> {props.monster.name} </h2>
    <p>{props.monster.email}</p>
</div>
 )}
export const Card=props=>{
让id=props.monster.url.split(“口袋妖怪/”)[1]。替换(“/”,“”)
报税表(
{props.monster.name}
{props.monster.email}

)}
考虑以下代码段

//购物车组件
康斯特卡=道具=>{
让id=props.monster.url.split(“口袋妖怪/”)[1]。替换(“/”,“”)
报税表(
{props.monster.name}
{props.monster.email}

)} //卡片列表组件 const CardList=props=>( {道具.怪物.地图(怪物=>( ))} ); 类应用程序扩展了React.Component{ render(){ 让数据=[{name:“bulbasaur”,url:“https://pokeapi.co/api/v2/pokemon/1/"}, {名称:“ivysaur”,网址:https://pokeapi.co/api/v2/pokemon/2/"}, {名称:“venusaur”,网址:https://pokeapi.co/api/v2/pokemon/3/"}, {名称:“charmander”,url:https://pokeapi.co/api/v2/pokemon/4/"}, {名称:“charmeleon”,url:https://pokeapi.co/api/v2/pokemon/5/"}, {名称:“charizard”,url:https://pokeapi.co/api/v2/pokemon/6/"}, {名称:“squirtle”,url:https://pokeapi.co/api/v2/pokemon/7/"}, {名称:“沃索尔”,网址:https://pokeapi.co/api/v2/pokemon/8/"}, {名称:“blanoise”,url:https://pokeapi.co/api/v2/pokemon/9/"}, {名称:“caterpie”,url:https://pokeapi.co/api/v2/pokemon/10/"}, {名称:“metapod”,url::https://pokeapi.co/api/v2/pokemon/11/"}, {名称:“无黄油”,网址:https://pokeapi.co/api/v2/pokemon/12/"}, {名称:“weedle”,url:https://pokeapi.co/api/v2/pokemon/13/"}, {名称:“卡库纳”,网址:https://pokeapi.co/api/v2/pokemon/14/"}, {名称:“beedrill”,url:https://pokeapi.co/api/v2/pokemon/15/"}, {名称:“pidgey”,网址:https://pokeapi.co/api/v2/pokemon/16/"}, {名称:“pidgeotto”,url:https://pokeapi.co/api/v2/pokemon/17/"}, {名称:“pidgeot”,url:https://pokeapi.co/api/v2/pokemon/18/"}, {名称:“拉塔塔”,网址:https://pokea