javascript - 为什么拼接方法只删除 React 中的第一个数组索引?

标签 javascript arrays reactjs state splice

我正在使用 PokeAPI 在 React 中制作一个小型应用程序,并且在使用 splice() 方法从数组(团队)中删除元素(宠物小 Sprite )时遇到问题。无论我选择删除哪个元素,它只会删除数组中的第一个元素。

这是通过 props 向下传递的函数,我正在使用它来删除项目。

removePokemon = (index) => {
  const team = [...this.state.team]
   team.splice(index, 1)
   this.setState({team})
  }

这是实际使用它的 Team 组件。

import React, { Component } from 'react';
import Button from 'react-bootstrap/Button'


class Team extends Component {
    render() {
        return (
            <div>
                <h2>{this.props.trainer && <p>{this.props.trainer}'s Team</p>}</h2>
                {this.props.team &&
                <div>
                    {this.props.team.map((pokemon, i) => (
                        <div key={pokemon.id}>
                            <span className='cardHeader'>#{pokemon.id} - {pokemon.name}</span>
                            <img src={pokemon.sprites.front_default} alt={pokemon.name}/>
                            <Button onClick={this.props.removePokemon}>Remove from team</Button>
                        </div>
                    ))}
                </div>
                }

            </div>
        );
    }
}

export default Team;

最佳答案

您没有将参数 index 传递给您的函数 removePokemon:

您需要编辑一行:

<Button onClick={() => this.props.removePokemon(i)}>Remove from team</Button>

关于javascript - 为什么拼接方法只删除 React 中的第一个数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56345313/

相关文章:

javascript - 不想页面跳转

arrays - 通过将每个单元格值拆分为由字符分隔的多个整数来创建一维数组,忽略其他字符

c - 二维数组和指针。

reactjs - 测试react-final-form更改事件

css - React Radium - 如何动态更改属性值

javascript - 正则表达式 Javascript 替换

php - Mediawiki 扩展在标题中添加 Javascript

reactjs - 目前尚未启用对实验性语法 'classProperties' 的支持

javascript - 使用indexOf获取数组集合中数组的索引(Javascript)

c - 尝试使用指针数组和冒泡排序编写数据排序程序,请帮忙