Javascript 包装函数以延迟该函数的调用?(删除React中的任务)

Javascript 包装函数以延迟该函数的调用?(删除React中的任务),javascript,reactjs,function,onclick,Javascript,Reactjs,Function,Onclick,我目前正在学习CS50哈佛大学的Beyond React课程,我正在练习制作待办事项列表,并通过单击按钮删除任务。我不明白的一件事是,如何删除任务,我们不想在点击按钮时立即调用deleteTask(I),因为正如讲师引用的那样,“这是一个函数的结果,而这不是我们想要做的。”相反,他将deleteTask函数包装在另一个没有参数的函数中,我不明白我的说法和他的说法有什么区别,也不明白他所说的结果是什么意思 这就是我们的任务 deleteTask = (index) => {

我目前正在学习CS50哈佛大学的Beyond React课程,我正在练习制作待办事项列表,并通过单击按钮删除任务。我不明白的一件事是,如何删除任务,我们不想在点击按钮时立即调用deleteTask(I),因为正如讲师引用的那样,“这是一个函数的结果,而这不是我们想要做的。”相反,他将deleteTask函数包装在另一个没有参数的函数中,我不明白我的说法和他的说法有什么区别,也不明白他所说的结果是什么意思

这就是我们的任务

deleteTask = (index) => {
        this.setState(state => {

          const tasks = [...state.tasks];
          tasks.splice(index, 1);
          return {
            tasks: tasks
            };
          })
      }
这是OnClick按钮中建议的内容:

               <ul>
                {this.state.tasks.map((task, i) => 
                    <li key={i}>
                      {task}
                      <button onClick={() => this.deleteTask(i)}>Delete</button>
                    </li>
                  )}
              </ul>
    {this.state.tasks.map((task,i)=>
  • {task} this.deleteTask(i)}>Delete
  • )}
但这就是我所拥有的:

               <ul>
                {this.state.tasks.map((task, i) => 
                    <li key={i}>
                      {task}
                      <button onClick={this.deleteTask(i)}>Delete</button>
                    </li>
                  )}
              </ul>
    {this.state.tasks.map((task,i)=>
  • {task} 删除
  • )}
您可以这样使用

<button onClick={i => this.deleteTask}>Delete</button>
你可以用这种方式

<button onClick={i => this.deleteTask}>Delete</button>
删除
当您执行此操作时,您将在每次组件呈现时调用该函数,而实际上,您应该仅在单击按钮时调用该函数。括号表示您正在执行函数,因为您只需要引用它

请查看下面的链接,以便更好地理解该概念:

删除
当您执行此操作时,您将在每次组件呈现时调用该函数,而实际上,您应该仅在单击按钮时调用该函数。括号表示您正在执行函数,因为您只需要引用它

请查看下面的链接,以便更好地理解该概念:

您需要一个函数作为参数。您编写它的方式是执行函数,而不是引用它……您希望函数作为参数。您编写它的方式是执行函数,而不是引用它。。。
<button onClick={this.deleteTask(i)}>Delete</button>