首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >React onClick函数在呈现时触发

React onClick函数在呈现时触发
EN

Stack Overflow用户
提问于 2015-11-22 01:55:13
回答 13查看 152.8K关注 0票数 281

我将两个值传递给子组件:

  1. 要显示
  2. 删除功能的对象列表。

我使用.map()函数来显示我的对象列表(类似于react教程页面中给出的示例),但是该组件中的按钮在呈现时触发onClick函数(它不应该在呈现时触发)。我的代码如下所示:

代码语言:javascript
复制
module.exports = React.createClass({
    render: function(){
        var taskNodes = this.props.todoTasks.map(function(todo){
            return (
                <div>
                    {todo.task}
                    <button type="submit" onClick={this.props.removeTaskFunction(todo)}>Submit</button>
                </div>
            );
        }, this);
        return (
            <div className="todo-task-list">
                {taskNodes}
            </div>
        );
    }
});

我的问题是:为什么onClick函数在渲染时触发,以及如何使其不触发?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2015-11-22 02:02:19

因为您调用的是该函数,而不是将函数传递给onClick,所以将该行更改为:

代码语言:javascript
复制
<button type="submit" onClick={() => { this.props.removeTaskFunction(todo) }}>Submit</button>

=>调用箭头函数,该函数是在ES6中引入的,将在React 0.13.3或更高版本上支持。

票数 664
EN

Stack Overflow用户

发布于 2015-11-22 02:00:57

不调用函数,而是将值绑定到函数:

代码语言:javascript
复制
this.props.removeTaskFunction.bind(this, todo)

参考文献:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind

票数 31
EN

Stack Overflow用户

发布于 2015-11-22 02:01:16

onClick属性的值应该是函数,而不是函数调用。

代码语言:javascript
复制
<button type="submit" onClick={function(){removeTaskFunction(todo)}}>Submit</button>
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33846682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档