我正在学习React,并按照本教程创建了一个简单的Tic-
Tac-Toe游戏,您可以在CodePen中查看。
对于在Board组件onClick
的renderSquare
函数内部返回的Square组件的属性中的箭头功能如何工作,我感到困惑onClick={() => this.props.onClick(i)}
。同样,我拥有的游戏组件也同样如此onClick={ (i) => this.handleClick(i)}
。我以为我可以不用箭头功能(就像一样onClick={this.handleClick(i)}
)来编写它,但这会中断游戏。
onClick
期望功能。箭头函数没有自己的功能this
; 使用this
封闭执行上下文的值。箭头功能可替代以下功能
onClick={this.handleClick.bind(this,i)}
当您像这样运行时它不起作用
onClick={this.handleClick(i)}
因为在这种情况下,它将调用一个函数,并且将传递一个返回值,该值将在每次调用render时进行评估。因此,如果您在onClick函数中执行某些操作导致例如重新渲染,则setState
您的应用程序将陷入无限循环。因此onClick
需要一个函数而不是一个值,因此除非您从onClick
处理程序中返回一个函数,否则不应直接调用它。
上面的Arrow函数执行将参数绑定到函数的作用
问题内容: 每次调用时,React都会重新渲染所有组件和子组件吗? 如果是这样,为什么?我以为这个想法是,当状态改变时,React只能渲染所需的内容。 在下面的简单示例中,尽管onClick处理程序始终将设置为相同的值,但是在随后的单击中状态不会改变,这两个类都在单击文本时再次呈现。 我曾希望只有在数据更改的情况下才会进行渲染。 这是示例代码,例如JS Fiddle和嵌入式代码段: 问题答案: 每
问题内容: 目前,我对新的react hooks API 的用例以及您可能会做的事情感到非常惊讶。 实验时出现的一个问题是,总是创建一个新的处理函数仅在使用时就扔掉是多么昂贵。 考虑以下示例: 尽管我将处理程序包装为,以避免每次渲染新处理程序时都会传递新的处理程序,但仍然必须创建内联箭头函数,而在大多数情况下都必须将其丢弃。 如果我只渲染几个组件,可能没什么大不了的。但是,如果我这样做数千次,对性
我有这个单声道代码: 当validate方法抛出ValidationException时,将同时调用handleValidation异常和handleException。我只希望调用handleValidationException。为什么会发生这种情况?如何防止handleException被调用?
问题内容: 每次调用时,React都会重新渲染所有组件和子组件吗? 如果是这样,为什么?我以为这个想法是,当状态改变时,React只渲染所需的内容。 在下面的简单示例中,尽管onClick处理程序始终将设置为相同的值,但是在随后的单击中状态不会改变,这两个类在单击文本时都再次呈现。 我曾希望只有在数据更改的情况下才会进行渲染。 这是示例代码,例如JS Fiddle和嵌入式代码段: 问题答案: 每次
我希望每次只呈现数组中的三个元素。 每次我将单击em来更改数字。 例如:在屏幕上:123,我点击了在按钮,会出现456和以上。 MyCode:
我有一个反应组件,它是一种形式。当用户单击发送/提交按钮时,将调用一个函数来处理数据保存并执行一些其他任务。 问题是在用户单击按钮后,组件似乎重新渲染了几次(很可能是因为它从其他组件接收的外部道具更新了)。这本身不是问题。 但是,当组件更新时,即使用户没有再次单击该按钮,也会再次调用函数。 这是我不明白的部分。为什么组件更新时会触发< code>onClick函数?我该如何防止这种情况发生? 我不