如何使用索引来识别被点击的待办事项?

大卫·扎戈尔斯基

基本上我需要删除一个被单击的ToDo,但是因为ToDo没有唯一的ID,所以它删除了所有的ID。我尝试了UUIDV4,但是我没有将其添加到每个ToDo中

App.js

class App extends Component {
  state = {
    input: "",
    todo: [],
    completed: false
  };

  handleRemove = (id) => {
    const remove = this.state.todo.filter((todo) => 
    todo.key !== id.key);
    this.setState({todo: remove});
  }

...
 <TodoList 
          todo={this.state.todo}
          rmv={this.handleRemove}
        />

待办事项清单

const TodoList = ({todo, rmv}) => {
    const todoBuild = todo.map((todo, index) => (
      <Todo 
        todo={todo} 
        key={index} 
        rmv={rmv}/>
    ))
    return <div> {todoBuild} </div>
};

一切

const Todo = ({todo, rmv}) => {
    return (
        <div className='todo'>
            <p>{todo}</p>
            <button className='btn-rmv' onClick={() => rmv (todo)}>x</button>
        </div>
    )
}
Src

数组是有序结构,因此您可以依赖项目索引,即使在序列化/反序列化之后,该索引也将保持不变。

注意(由于@devserkan):...如果使用嵌套数组,本示例中使用的Spread运算符()会创建数组的浅表副本-请splice修改原始数组(这是您永远都不想做的)。请使用方法创建数组的深层副本(JSON.parse(JSON.stringify(...))lodash库方法等)或用代替splice函数Array.filter

删除功能

handleRemove = (id) => {
    let todo = [...this.state.todo]
    todo.splice(id, 1);
    this.setState({todo});
  }

待办事项清单

const TodoList = ({todo, rmv}) => {
    const todoBuild = todo.map((todo, index) => (
      <Todo 
        itemIndex={index}
        todo={todo} 
        key={index} 
        rmv={rmv}/>
    ))
    return <div> {todoBuild} </div>
};

一切

const Todo = ({todo, rmv, itemIndex}) => {
    return (
        <div className='todo'>
            <p>{todo}</p>
            <button className='btn-rmv' onClick={() => rmv(itemIndex)}>x</button>
        </div>
    )
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何更新待办事项?

如何使用keydown功能制作JavaScript待办事项列表

如何使用Vue.js保存待办事项

如何使用URL查看versionone待办事项?

点击顶部的待办事项会导致底部的待办事项也被点击

如何标记和标记“待办事项”?

使用Javascript创建待办事项列表

TodoApp-使用索引切换待办事项的麻烦

如何在 GitLab 评论中添加待办事项以增加待办事项数量?

如何在没有钩子和 redux 的待办事项列表中编辑待办事项

删除待办事项列表中的待办事项后如何重置ID号?

如何使用Rest API在DevOps上的产品待办事项中添加标签?

在Excel中使用vba构建待办事项列表:如何动态插入行?

如何使用按钮删除通过JavaScript添加的“待办事项”列表项

如何设置待办事项列表以使用Twilio接收和发送SMS

如何使用 Angular 5 删除待办事项列表中的多个任务

如何使用复选框完成待办事项列表中的任务?

删除待办事项清单

待办事项列表 JavaScript

在待办事项示例中

如何用octobercms创建待办事项清单?

如何在 Theymeleaf 上显示与 TodoList 关联的待办事项?

如何在ReactJs中删除待办事项?

如何实现待办事项/列表顺序的保存?

如何忽略Atom中特定文件的待办事项

如何将任务作为待办事项包括在内?

如何在React中删除待办事项onClick?

如何使我的Ubuntu 16.04系统显示待办事项提醒?

如何删除 Evolution 中的“待办事项”侧边栏?