reactjs - react : duplicated item in list

标签 reactjs

我绝对是 React 的初学者。我创建了一个简单的应用程序来在页面上显示整数列表。有一个“添加项目”按钮,当用户按下按钮时,应用程序会向列表中添加一个新整数。当我按下按钮时,新整数会两次添加到列表中。谁能帮忙?

import React from 'react';

class App extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      items: [],
      idx: 0
    }

    this.addItem = this.addItem.bind(this);
  }

  render() {
    return <div><h1>Learning app</h1>
    <ul>
      {this.state.items.map(item => (
        <li key={item}>{item}</li>
      ))}
    </ul>
    <button onClick={this.addItem}>Add Item</button>
    </div>;
  }

  addItem() {
    this.setState((state, props) => {
      state.items.push(state.idx)

      return {
        items: state.items,
        idx: state.idx + 1
      }
    })
  }
}

export default App;

当我把它放在 addItem 中时

    this.state.items.push(this.state.idx);
    this.setState({
      idx: this.state.idx + 1
    })

它没有任何问题。

出于实验目的,我特意使用带有箭头功能的 setState。我做错了什么吗?

最佳答案

你可以试试这个,它会在列表中添加一个项目

addItem = () => {
    this.setState({
      items: [...this.state.items, this.state.idx],
      idx: this.state.idx + 1,
    });
  };

关于reactjs - react : duplicated item in list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62372735/

相关文章:

javascript - React ref 在 Material ui 的自定义输入中给出了未定义

javascript - 在 React 中按 Enter 键时获取文本输入的状态

javascript - Reactjs TextArea 对象是只读的而不是可变的

javascript - 如何使用react和react-apollo从graphql服务器获取数据?

node.js - npm 串口获取输出以 react 组件

javascript - 类型错误 : cyclic object value in React

javascript - 将 Dome javascript 对象转换为 React 元素

reactjs - 如果我的基本路线相同,history.push() 在 react 路由器中不起作用

reactjs - 使用 React 三 Fiber 获取渲染器信息

reactjs - 如何使用 React-Native 在路由更改时销毁组件或停止其执行?