【问题标题】:Reactjs with PokeapiReactjs 与 Pokeapi
【发布时间】:2016-11-25 04:01:30
【问题描述】:

我有一个搜索口袋妖怪名称的应用程序读取数据,例如。姓名、身高、体重。现在说到技能,我无法获得技能名称的价值。

这是我的 app.js

import React, { Component } from 'react';
import './App.css';
import Request from 'superagent';

class App extends Component {
 constructor(props) {
    super(props);
    this.state = {
      body: "",
      value: "",
      name: "",
      abilities: "",
      order: "",
      weight: "",
      height: ""
    };

    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleChange(event) {
    this.setState({value: event.target.value.toLowerCase()});
  }

  handleSubmit(event) {
    var url = "https://pokeapi.co/api/v2/pokemon/"+this.state.value;
    Request.get(url).then((response) => {
      this.setState({
        body: response.body,
        height: response.body.height,
        weight: response.body.weight,
        abilities: response.body.abilities,
        name: response.body.name,
        order: response.body.order,
        picFront: response.body.sprites.front_default,
        picBack: response.body.sprites.back_default,
        picShiny: response.body.sprites.front_shiny,


      });
    });
    event.preventDefault();
  }

  render() {

    return (
      <div className="flex">
          <div className="App">
          <h1>Search Pokemon</h1>
          <form onSubmit={this.handleSubmit}>
              <input type="text" value={this.state.value} onChange={this.handleChange} />
              <input type="submit" value="Submit" />
          </form>
        </div>
        <div className="app2">
          <h1><small>{this.state.order} </small>{this.state.name}</h1>
          <img alt={this.state.name} src={this.state.picFront}/>
          <img alt={this.state.name} src={this.state.picBack}/>
          <img alt={this.state.name} src={this.state.picShiny}/>
          <p>Height: {this.state.height}</p>
          <p>Weight: {this.state.weight}</p>
          <p>list of abilities here</p>
        </div>
      </div>

    );
  }
};


export default App;

【问题讨论】:

  • 你在this.state.abilities有什么?
  • 我试图获取能力值

标签: javascript reactjs


【解决方案1】:

技能具有这种结构。您可以通过记录 this.state.abilities 来检查这一点

abilities: [
  {
    slot: 3,
    is_hidden: true,
    ability: {
      url: "https://pokeapi.co/api/v2/ability/31/",
      name: "lightning-rod"
    }
  },
  {
    slot: 1,
    is_hidden: false,
    ability: {
      url: "https://pokeapi.co/api/v2/ability/9/",
      name: "static"
    }
  }
]

这只是一个数组。您需要做的是遍历此数组以检索这些名称值。有很多方法可以做到这一点,但一般逻辑应该是这样的:

“对于能力数组中的每个对象,我需要检索能力名称”

我将在这里发布一些代码,但在查看我的代码之前尝试自己解决它。

在你的 p 标签中,你可以这样做

    <p>
      list of abilities here: 
      {this.state.abilities && this.state.abilities.map((abilityObject) => 
        abilityObject.ability.name).join(', ')}
    </p>

【讨论】:

  • 我收到一条错误消息“未捕获的类型错误:无法读取未定义的属性“名称”
  • 你要的是哪个宝可梦?
  • 我没有输入口袋妖怪的名字。
  • 我的错误。查看我编辑的代码。这应该使函数仅在有可用功能时运行。
  • 请问你知道如何在 React 中处理文件吗?
猜你喜欢
  • 2020-09-29
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 2021-11-07
  • 1970-01-01
  • 2016-05-29
  • 2018-09-17
  • 2020-09-18
相关资源
最近更新 更多