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