首页 > web前端 > js教程 > 为什么我的 React `onClick` 函数在渲染时触发?

为什么我的 React `onClick` 函数在渲染时触发?

Barbara Streisand
发布: 2024-11-10 13:58:03
原创
808 人浏览过

Why is My React `onClick` Function Triggering on Render?

React onClick 函数在渲染时触发

在从父组件接收数据的组件中使用 React 的 onClick 函数时会出现一个常见问题。当 onClick 函数定义不正确时,它可能会在渲染过程中无意触发,而不是等待用户点击事件。

为了理解这个问题,让我们分析一下提供的示例代码:

var taskNodes = this.props.todoTasks.map(function(todo) {
    return (
        <div>
            {todo.task}
            <button type="submit" onClick={this.props.removeTaskFunction(todo)}>Submit</button>
        </div>
    );
}, this);
登录后复制

问题出在 onClick 事件处理程序中。目前,直接调用 this.props.removeTaskFunction(todo) ,它会在渲染过程中立即执行该函数。这不是所需的行为,因为 onClick 函数只应在单击按钮时调用。

要解决此问题,应修改代码以传递函数引用而不是调用它:

<button type="submit" onClick={() => this.props.removeTaskFunction(todo)}>Submit</button>
登录后复制

使用箭头函数可确保不会立即调用removeTaskFunction,而是等待用户单击事件执行。箭头函数在 ES6 中引入,并在 React 0.13.3 或更高版本中受支持。

以上是为什么我的 React `onClick` 函数在渲染时触发?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板