【问题标题】:React // Display keys of mapped array in stateReact // 在状态下显示映射数组的键
【发布时间】:2019-08-18 17:00:14
【问题描述】:

我从一个开放的 api 接收数据,该数据存储在 state 的数组中。然后我映射数组以在列表项中输出它并另外给它们键。 (目前有效)

  1. 我想在另一个列表项中显示数组中每个元素的位置。 (这不起作用)。 (结果当然应该是 1-17)。
  2. 然后我想将每个元素位置与给定位置进行比较。所以,如果 ItemPosition[5] = 6 做...
import React, { Component } from 'react';
import axios from 'axios';
import './App.css';


class App extends Component {

  state = {
    teams: []
  }

  componentDidMount() {
    axios.get(`https://www.openligadb.de/api/getbltable/bl1/2019`)
      .then(res => {
        const teams = res.data;
        this.setState({ teams });
      })
  }

  render() {
    return(
    <ul>
      {this.state.teams.map(p => <li key={p.id}>{p.TeamName}</li>)}
      // next line is not correct
      {this.state.teams.map(t => <li key={t.id}>{t.key}</li>)}
    </ul>
  );
  }
}


export default App;

【问题讨论】:

    标签: arrays reactjs state


    【解决方案1】:

    您可以像这样访问数组的索引作为 map 的第二个参数:

    {this.state.teams.map((t, index) => <li key={t.id}>{index}</li>)}
    

    您可以使用此索引来比较项目。

    希望这会有所帮助。

    【讨论】:

    • 好的,现在就做!
    • 对不起,这里是:) : onClickButton = () => { if (this.state.teams[7].TeamName === "FC Bayern") { this.setState((prevState ) => ({ gram: prevState.gram + 1 })); } else { this.setState((prevState) => ({ gram: prevState.gram - (1 - this.state.teams.TeamName.findIndex(teamName => teamName.value === "FC Bayern")) }) ); } };
    • 我想测试一个 Teamname 是否位于数组中的特殊位置(工作)。如果不是,我想获得给定数字(在本例中为 1)与我比较的 Teamname 的位置之间的差异,并将其更新为状态。否定的结果是可以接受的。
    • 你能展示一些数据吗,你如何保存它以及你的结构是什么样的?
    • 我为你做了我的组件。这对你来说足够了吗,你能看到吗? jsfiddle.net/Van_Gram/n5q8dx2s
    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 2021-05-11
    • 2018-04-09
    • 2020-04-22
    • 2020-12-29
    • 2020-02-22
    • 2017-10-09
    • 2020-12-31
    相关资源
    最近更新 更多